如何在Python Imaging Library中调整缩放图像的质量?
我正在使用PIL这个库,想知道在调整图片大小或者制作缩略图的时候,图片的质量是否可以调整。我了解到默认的质量设置是85。请问在调整大小的时候,这个参数可以修改吗?
我现在使用的代码如下:
image = Image.open(filename)
image.thumbnail((x, y), img.ANTIALIAS)
这个ANTIALIAS
参数应该能提供最好的质量。我想知道我们是否可以更细致地调整质量选项。
5 个回答
16
不要把重新缩放和压缩搞混了。
为了获得最佳质量,你需要同时使用这两种方法。看看下面的代码:
from PIL import Image
image = Image.open(filename)
image.thumbnail((x, y), Image.ANTIALIAS)
image.save(filename, quality=100)
通过这种方式,我在我的程序中得到了非常精细的缩略图。
48
ANTIALIAS这个参数和“85”这个质量等级是完全不同的。ANTIALIAS告诉缩略图的方法应该用什么算法来调整像素的大小。举个例子,如果我有一张3x3的图片,看起来是这样的:
2 2 2
2 0 2
2 2 2
然后我把它缩小到2x2,可能会有一种算法给我这样的结果:
2 2
2 2
因为周围大部分的像素都是2,而另一种算法可能会给我这样的结果:
1 1
1 1
这样做是为了考虑到中间的0。但是你还没有开始处理压缩,直到你保存图片的时候才会处理。也就是说,在缩略图的处理过程中,你并不是在调整质量的细微差别,而是在使用不同的算法来重新采样。所以在这里,你无法获得更精细的控制。
如果你保存为一种有损压缩的格式,那才是指定质量等级的地方。
109
手动使用PIL的 resize
方法:
image = image.resize((x, y), Image.ANTIALIAS) # LANCZOS as of Pillow 2.7
然后使用保存方法
quality_val = 90
image.save(filename, 'JPEG', quality=quality_val)
可以看看models.py
文件,了解Photologue是怎么实现的。