枕头的Image.thumbnail()不会做任何事情
问题描述:
我尝试使用下面的代码,以使缩略图:枕头的Image.thumbnail()不会做任何事情
import Image
# Skipping creation of file-like object 'f'
im = Image.open(f)
im.thumbnail((256, im.height))
im.save(f, 'WebP')
f.flush()
的docs说“这个方法修改图像包含的本身,没有大的缩略图版本比给定的大小。“因此,我期望输出适合在256px宽度内,而preserving the aspect ratio。但是,上面的代码没有任何效果,输出图像与输入的分辨率相同,它始终大于256px宽度。
我该如何达到预期效果?
答
枕头文档指定该文件需要在二进制模式下打开,但在此使用w+b
新图像实际上被附加到旧图像。它需要被完全加载到内存和文件被截断。工作代码是:
import Image
# Skipping creation of file-like object 'f'
im = Image.open(f)
im.load()
f.seek(0)
f.file.truncate()
im.thumbnail((256, im.height))
im.save(f, 'WebP')
f.flush()