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)
我认为您正在寻找的是ImageOps.fit功能。来自PIL docs:
ImageOps.fit(图像,大小,方法,出血,居中)=>图像
返回图像的大小和裁剪版本,裁剪为请求的宽高比和大小。 size参数是请求的输出大小(以像素为单位),以(宽度,高度)元组的形式给出。
以上是关于PIL Image.resize()没有调整图片大小的主要内容,如果未能解决你的问题,请参考以下文章
torchvision中的resize对PIL.Image对象的处理速度要优于opencv近7千倍
使用 Firebase Image Resize Extension 时避免重新生成令牌