如何在Python中使用PIL的resize或transform正确缩放图像
我想知道大家是否知道如何正确地使用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模块,或者试试其他版本。