我正在研究 PIL,需要知道在调整图像大小或缩小图像时是否可以调整图像质量。据我所知,默认质量设置为 85。可以在调整大小期间调整此参数吗?
我目前正在使用以下代码:
image = Image.open(filename)
image.thumbnail((x, y), img.ANTIALIAS)
该ANTIALIAS
参数大概给出了最好的质量。我需要知道我们是否可以在质量选项上获得更多的粒度。
我正在研究 PIL,需要知道在调整图像大小或缩小图像时是否可以调整图像质量。据我所知,默认质量设置为 85。可以在调整大小期间调整此参数吗?
我目前正在使用以下代码:
image = Image.open(filename)
image.thumbnail((x, y), img.ANTIALIAS)
该ANTIALIAS
参数大概给出了最好的质量。我需要知道我们是否可以在质量选项上获得更多的粒度。
resize
手动使用 PIL 的方法:
image = image.resize((x, y), Image.ANTIALIAS) # LANCZOS as of Pillow 2.7
其次是save方法
quality_val = 90
image.save(filename, 'JPEG', quality=quality_val)
查看 Photologue的来源,models.py
看看他们是如何做到的。
ANTIALIAS 无法与“85”质量水平相媲美。ANTIALIAS 参数告诉缩略图方法使用什么算法将像素从一种尺寸重新采样到另一种尺寸。例如,如果我有一个看起来像这样的 3x3 图像:
2 2 2
2 0 2
2 2 2
我将其调整为 2x2,一种算法可能会给我:
2 2
2 2
因为附近的大多数像素都是2s,而另一个可能会给我:
1 1
1 1
为了考虑到中间的0。但是你还没有开始处理压缩,直到你保存图像。也就是说,在缩略图中,您处理的不是质量等级,而是用于重采样的离散算法。所以不,你不能在这里得到更好的控制。
如果您保存为具有有损压缩的格式,则可以在此处指定质量级别。
不要混淆重新缩放和压缩。
为了获得最佳质量,您必须同时使用两者。请参阅以下代码:
from PIL import Image
image = Image.open(filename)
image.thumbnail((x, y), Image.ANTIALIAS)
image.save(filename, quality=100)
通过这种方式,我在我的程序中有很好的拇指。
抗锯齿 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
获得更好质量的一种方法是分两步进行缩小。例如,如果您的原始图像是 1200x1200 并且您需要将其调整为 64x64 像素,那么在第一步将其缩小到这两种尺寸中间的某个位置:
1200x1200 -> 600x600 -> 64x64