首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PIL调整图像大小并保持其纵横比?

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

Stack Overflow用户
提问于 2008-11-08 07:08:04
回答 23查看 889K关注 0票数 546

有没有什么明显的方法可以解决我没有注意到的问题呢?我只是想做些缩略图。

EN

回答 23

Stack Overflow用户

回答已采纳

发布于 2008-11-08 07:15:38

定义最大大小。然后,通过获取min(maxwidth/width, maxheight/height)来计算调整比率。

合适的大小是oldsize*ratio

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

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

代码语言:javascript
运行
复制
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.ANTIALIAS)
            im.save(outfile, "JPEG")
        except IOError:
            print "cannot create thumbnail for '%s'" % infile
票数 559
EN

Stack Overflow用户

发布于 2009-01-16 19:12:07

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

代码语言:javascript
运行
复制
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.ANTIALIAS)
img.save('somepic.jpg')
票数 345
EN

Stack Overflow用户

发布于 2009-06-02 16:03:08

我还推荐使用PIL的缩略图方法,因为它消除了所有的比率问题。

不过,有一个重要的提示:替换

代码语言:javascript
运行
复制
im.thumbnail(size)

使用

代码语言:javascript
运行
复制
im.thumbnail(size,Image.ANTIALIAS)

默认情况下,PIL使用Image.NEAREST过滤器来调整大小,这会导致良好的性能,但质量较差。

票数 77
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/273946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档