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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PIL Image.resize()没有调整图片大小相关的知识,希望对你有一定的参考价值。

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

答案

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

from PIL import Image
#...

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

source

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

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

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

以上是关于PIL Image.resize()没有调整图片大小的主要内容,如果未能解决你的问题,请参考以下文章

torchvision中的resize对PIL.Image对象的处理速度要优于opencv近7千倍

使用 Firebase Image Resize Extension 时避免重新生成令牌

PIL 和使用 asyncio 阻塞调用

在 Tkinter 中调整 PIL 中的图片大小

Python PIL调整图片大小尺寸和转换图片格式,removebg改变图片背景透明化处理

pgmagick,pil不保存图片并且获取图片二进制数据记录