0
我试图通过使用thumbnail()/resize()
函数调整图像的大小,我知道这个thumbnail()
返回NoneType
,因为它确实是魔法并且不会创建副本。我已经尝试了几个选项: 注:我不想将其保存到本地,这会被发送到s3
PIL调整大小图像返回NoneType
original_image
是filestorage,它是从一个form
到来。
尝试1:
from PIL import Image
from io import BytesIO
def resize_img(original_image, size):
sizes = {
'thumbnail': (128, 128),
'medium': (640, 640),
'large': (1024, 1024)
}
im = Image.open(BytesIO(original_image.read()))
return im.thumbnail(sizes[size], Image.ANTIALIAS)
回报NoneType
并不能使用它。有没有办法让它返回可用的东西?
尝试2:
wpercent = (sizes[size]/float(im.size[0]))
hsize = int((float(im.size[1])*float(wpercent)))
return im.resize((sizes[size], hsize), Image.ANTIALIAS)
返回<class 'PIL.JpegImagePlugin.JpegImageFile'>
但boto3
抱怨说,这Fileobj must implement read
什么是我选择这里?
['.thumbnail()'](http://pillow.readthedocs.io/en/4.0.x/reference/Image.html#PIL.Image.Image.thumbnail)确实对图像进行了原地修改并按照记录返回'None'。 “*如果您还需要使用全分辨率图像,请将此方法应用于原始图像的副本()*” – dhke
@dhke这就是我上面所说的。问题是;如何在调整大小后创建新图像,以便稍后使用。 – Leustad
['.copy()'](http://pillow.readthedocs.io/en/4.0.x/reference/Image.html#PIL.Image.Image.copy)?看到(现在)引用了文档的摘录;-) – dhke