如何在Python Imaging Library中调整已resize的图像的质量?

我在PIL上工作,需要知道在调整图像大小或缩略图时是否可以调整图像质量。 从我所知道的默认质量设置为85.可以调整这个参数在resize?

我目前使用下面的代码:

image = Image.open(filename) image.thumbnail((x, y), img.ANTIALIAS) 

ANTIALIAS参数推测可以提供最好的质量。 我需要知道,如果我们可以得到更多的粒度质量选项。

手动使用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的源代码,看看他们是如何做到的。

ANTIALIAS无法与“85”质量水平相提并论。 ANTIALIAS参数告诉缩略图方法使用什么algorithm将像素从一个尺寸重新采样到另一个尺寸。 例如,如果我有一个像这样的3×3图像:

 2 2 2 2 0 2 2 2 2 

我把它调整到2×2,一个algorithm可能会给我:

 2 2 2 2 

因为附近的大部分像素是2s,而另一个可能会给我:

 1 1 1 1 

为了考虑中间的0。 但是你还没有开始处理压缩,直到你保存图像。 也就是说,在缩略图中,您不是在处理质量的等级,而是在用重新采样的离散algorithm。 所以不,你不能在这里得到更好的控制。

如果您保存为具有有损压缩的格式,那么这是指定质量级别的地方。

不要混淆重新缩放和压缩。

为了获得最好的质量,你必须使用两者。 看下面的代码:

 from PIL import Image image = Image.open(filename) image.thumbnail((x, y), Image.ANTIALIAS) image.save(filename, quality=100) 

这样我的程序中就有了非常好的拇指。

Antialias n设置像90的质量

  img = img.resize((128,128),Image.ANTIALIAS) img.save(os.path.join(output_dir+'/'+x,newfile),"JPEG",quality=90) 

http://www.dzone.com/snippets/resize-thousands-images-python

达到更好质量的一种方法是分两步进行缩小。 例如,如果您的原始图像是1200×1200,而您需要将其大小调整为64×64像素,则第一步将其缩小到这两种尺寸中间的某个位置:

1200×1200 – > 600×600 – > 64×64