小能豆

PIL Image.resize() 未调整图片大小

python

我有一些奇怪的问题,PIL 没有调整图像大小。

from PIL import Image
img = Image.open('foo.jpg')

width, height = img.size
ratio = floor(height / width)
newheight = ratio * 150

img.resize((150, newheight), Image.ANTIALIAS)

img.save('mugshotv2.jpg', format='JPEG')

此代码运行时没有任何错误,并生成mugshotv2.jpg在正确文件夹中命名的图像,但它不会调整其大小。它做了一些事情,因为图片的大小从 120 kb 下降到 20 kb,但尺寸保持不变。

也许您还可以建议用更少的代码将图像裁剪成正方形的方法。我有点以为这样Image.thumbnail就可以了,但它所做的是将我的图像按宽度缩放到 150 像素,高度保留 100 像素。


阅读 79

收藏
2024-05-15

共1个答案

小能豆

问题在于 resize() 方法返回一个新的 Image 对象,而不会修改原始的 Image 对象。所以,您需要将调整大小后的图像对象保存到一个新的变量中,然后再保存成新的文件。

以下是修正后的代码:

from PIL import Image
from math import floor

img = Image.open('foo.jpg')

width, height = img.size
ratio = floor(height / width)
newheight = ratio * 150

# 调整图像大小并保存为新的图像对象
resized_img = img.resize((150, newheight), Image.ANTIALIAS)

# 将调整大小后的图像保存为新的文件
resized_img.save('mugshotv2.jpg', format='JPEG')

这段代码将调整大小后的图像保存为新的文件 'mugshotv2.jpg',并且应该会正常工作。确保您将调整大小后的图像对象保存到新的变量 resized_img 中,然后再保存为新的文件。

2024-05-15