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