如何在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