枕头的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()