我有一些奇怪的问题,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,但尺寸保持不变。
mugshotv2.jpg
也许您还可以建议用更少的代码将图像裁剪成正方形的方法。我有点以为这样Image.thumbnail就可以了,但它所做的是将我的图像按宽度缩放到 150 像素,高度保留 100 像素。
Image.thumbnail
问题在于 resize() 方法返回一个新的 Image 对象,而不会修改原始的 Image 对象。所以,您需要将调整大小后的图像对象保存到一个新的变量中,然后再保存成新的文件。
resize()
以下是修正后的代码:
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 中,然后再保存为新的文件。
'mugshotv2.jpg'
resized_img