如何在Python中使用PIL的resize或transform正确缩放图像

1 投票
1 回答
2026 浏览
提问于 2025-04-29 03:42

我想知道大家是否知道如何正确地使用PIL方法来缩放图像。我已经读过相关内容,知道可以用:
im.resize(size_tuple)
但是我缩放后总是得到不完整的图像。这里是我的代码和结果图片,希望你们能帮我,谢谢。

if image_size[0] <  120 and image_size[1] <  155:
     image = image.resize((120,155),Image.ANTIALIAS)
     image.save(f_out)

这段代码保存了我缩放后的图像,但底部出现了一条黑线,图像也被裁剪了,不完整,有什么办法可以解决这个问题吗?提前谢谢你们。

更新:
这是我使用的完整代码。

def makeThumb(f_in, f_out, size=(120,155), pad=False):
    image = Image.open(f_in)
    avatar_size = (120,155)
    image_size = image.size
    method = Image.NEAREST if image_size == avatar_size else Image.ANTIALIAS

    if pad:
        thumb = image.crop( (0, 0, size[0], size[1]) )
        offset_x = max( (size[0] - image_size[0]) / 2, 0 )
        offset_y = max( (size[1] - image_size[1]) / 2, 0 )
        thumb = ImageChops.offset(thumb, offset_x, offset_y)

    else:
        if image_size[0] <  120 and image_size[1] <  155:
            image = image.resize((120,155),Image.ANTIALIAS)
            image.save(f_out)          
        else:
            thumb = ImageOps.fit(image, size, method,0.05,(0.5, 0.5))
暂无标签

1 个回答

0

我怀疑你用的PIL版本有问题。你的代码在我这里运行得很好,使用的是你链接下载的图片。也就是说,它可以调整图片大小,填满整个框,没有黑边。我建议你重新安装一下PIL模块,或者试试其他版本。

撰写回答