PIL resize image返回NoneTyp

2024-06-17 12:07:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过使用thumbnail()/resize()函数来调整图像的大小,我知道这个thumbnail()返回{},因为它确实很神奇,而且不会创建副本。我试过几种选择: 注意:我不想保存到本地,这将被发送到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:

^{pr2}$

返回<class 'PIL.JpegImagePlugin.JpegImageFile'>,但是boto3抱怨这Fileobj must implement read

我有什么选择?在


Tags: 函数from图像imageimportreadsizepil
1条回答
网友
1楼 · 发布于 2024-06-17 12:07:52

下面是我如何想出一个解决方案。感谢@jasonharper

def resize_img(original_image, size):
    sizes = {
        'thumbnail': (128, 128),
        'medium': (640, 640),
        'large': (1024, 1024)
    }

    im = Image.open(BytesIO(original_image.read()))
    img = im.copy()

    img.thumbnail(sizes[size], Image.ANTIALIAS)
    byte_io = BytesIO()
    img.save(byte_io, 'JPEG')
    byte_io.seek(0)
    return byte_io

此解决方案有效,boto3也没有抱怨。在

相关问题 更多 >