我尝试使用thumbnail()/resize()
函数调整图片大小,我知道这个thumbnail()
会返回NoneType
因为它确实具有魔力并且不创建副本。我尝试过几个选项:
注意:我不想将其保存到本地,这将发送到s3
original_image
是一个文件存储,它来自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
我有什么选择?
答案 0 :(得分:1)
以下是我提出解决方案的方法。感谢@jasonharper
traces | extend d = parsejson(message) | mvexpand d.address
此解决方案有效且JLabel
也不会抱怨。
答案 1 :(得分:0)
我从上面的代码中看到,您也在尝试:
return im.thumbnail(sizes[size], Image.ANTIALIAS)
但是,Image.thumbnail
是返回None
的就地操作。您将需要以下内容:
im.thumbnail(sizes[size], Image.ANTIALIAS)
return im
您可能还想对原始图像进行.copy()
处理。
P.S。 sizes[size]
必须是一个元组。在您的示例中。我只是说这是因为我个人几次犯了这个错误。 :)