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

时间:2009-09-10 14:27:56

标签: python python-imaging-library

我正在处理PIL,需要知道在调整图像大小或缩略图像时是否可以调整图像质量。据我所知,默认质量设置为85.可以在调整大小期间调整此参数吗?

我目前正在使用以下代码:

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

ANTIALIAS参数可能会提供最佳质量。我需要知道我们是否可以在质量选项上获得更多粒度。

5 个答案:

答案 0 :(得分:80)

手动使用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)

查看Photologue的models.py来源,了解他们是如何做到的。

答案 1 :(得分:46)

ANTIALIAS绝不能与“85”质量水平相媲美。 ANTIALIAS参数告诉缩略图方法用于将像素从一种尺寸重新采样到另一种尺寸的算法。例如,如果我有一个看起来像这样的3x3图像:

2 2 2
2 0 2
2 2 2

我将其调整为2x2,一个算法可能会给我:

2 2
2 2

因为附近的大多数像素都是2,而另一个可能会给我:

1 1
1 1

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

如果您保存为具有有损压缩的格式,则可以指定质量等级。

答案 2 :(得分:11)

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

为了获得最佳品质,您必须同时使用两者。请参阅以下代码:

from PIL import Image

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

通过这种方式,我的节目中有很好的拇指。

答案 3 :(得分:1)

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

答案 4 :(得分:-1)

实现更高质量的一种方法是分两步进行缩小。例如,如果您的原始图像是1200x1200并且需要将其调整为64x64像素,那么在第一步中将其缩小到这两种尺寸中间的某个位置:

1200x1200 - > 600x600 - > 64×64