【问题标题】:PIL Image.resize() not resizing the picturePIL Image.resize() 不调整图片大小
【发布时间】:2009-08-09 20:36:35
【问题描述】:

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

【问题讨论】:

    标签: python resize python-imaging-library


    【解决方案1】:

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

    from PIL import Image
    #...
    
    img = img.resize((150, newheight), Image.ANTIALIAS)
    

    source

    我认为您正在寻找的是 ImageOps.fit 函数。来自 PIL docs:

    ImageOps.fit(image, size, method, bleed, centering) => image

    返回一个大小和裁剪的版本 图像,裁剪为请求 纵横比和大小。规模 参数是请求的输出大小 以像素为单位,以 (width, height) 形式给出 元组。

    【讨论】:

    • 谢谢!就是这样。这又是我经常犯的这种愚蠢、简单的错误:P。再看一遍,我无法理解我自己是如何不理解的——毕竟它在该死的文档中。我想我需要睡觉了。再次感谢,我改天试试 ImageOps.fit :D
    • @Zayatzz,所以接受@Nadia 的回答,因为它已经解决了你的问题并且甚至提供了更好的方法的建议!
    • 啊..那个奇怪的复选标记....哦。它可以用一些东西来吸引更多的注意力。
    猜你喜欢
    • 2012-12-01
    • 2011-05-03
    • 2017-04-01
    • 2021-06-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多