如何使用 PIL 调整图像大小并保持其纵横比?

新手上路,请多包涵

有没有明显的方法可以做到这一点,我错过了?我只是想制作缩略图。

原文由 saturdayplace 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 520
2 个回答

定义最大尺寸。然后,通过采用 min(maxwidth/width, maxheight/height) 计算调整大小比率。

正确的大小是 oldsize*ratio

当然还有一个库方法可以做到这一点:方法 Image.thumbnail

下面是 PIL 文档 中的一个(编辑过的)示例。

 import os, sys
import Image

size = 128, 128

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"
    if infile != outfile:
        try:
            im = Image.open(infile)
            im.thumbnail(size, Image.Resampling.LANCZOS)
            im.save(outfile, "JPEG")
        except IOError:
            print "cannot create thumbnail for '%s'" % infile

原文由 gnud 发布,翻译遵循 CC BY-SA 4.0 许可协议

此脚本将使用 PIL(Python 图像库)将图像 (somepic.jpg) 调整为 300 像素的宽度和与新宽度成比例的高度。它通过确定 300 像素占原始宽度 (img.size[0]) 的百分比然后将原始高度 (img.size[1]) 乘以该百分比来实现此目的。将“basewidth”更改为任何其他数字以更改图像的默认宽度。

 from PIL import Image

basewidth = 300
img = Image.open('somepic.jpg')
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.Resampling.LANCZOS)
img.save('somepic.jpg')

原文由 tomvon 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题