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

时间:2009-08-09 20:36:36

标签: python resize python-imaging-library

我有一些奇怪的问题,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像素。

1 个答案:

答案 0 :(得分:83)

resize()返回图片的已调整大小的副本。它不会修改原件。使用它的正确方法是:

from PIL import Image
#...

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

source

我认为您正在寻找的是ImageOps.fit功能。来自PIL docs

  

ImageOps.fit(图像,大小,方法,出血,居中)=>图像

     

返回大小和裁剪的版本   图像,裁剪为要求的   纵横比和尺寸。尺寸   参数是请求的输出大小   以像素为单位,以(宽度,高度)给出   元组。