为什么PIL生成的JPEG图像质量如此差?

时间:2013-10-10 18:38:03

标签: python python-imaging-library

使用PIL(1.1.7)创建的JPEG图像质量非常差。这是一个例子:

输入:https://s23.postimg.cc/8bks3x5p7/cover_1.jpg

输出:https://s23.postimg.cc/68ey9zva3/cover_2.jpg

使用以下代码创建输出图像:

from PIL import Image
im = Image.open('/path/to/cover_1.jpg')
im.save('/path/to/cover_2.jpg', format='JPEG', quality=100)

红色文字看起来非常糟糕。使用GIMP或Photoshop保存图像甚至不能接近PIL创建的质量差。 有人知道为什么会这样,以及如何解决它?

1 个答案:

答案 0 :(得分:34)

JPEG质量有两个部分。第一个是quality设置,您已将其设置为最高可能值。

JPEG也使用chroma subsampling,假设色调变化不如亮度变化重要,并且可以安全地丢弃某些信息。不幸的是,在要求苛刻的应用中,这并不总是正确的,你最容易在红色边缘注意到这一点。 PIL没有公开记录的设置来控制这方面。

由Pascal Beyeler编辑:

我刚刚找到一个禁用子采样的选项。保存图像时可以设置subsampling=0,图像看起来更清晰!谢谢你的帮助标记!

im.save('/path/to/cover-2.jpg', format='JPEG', subsampling=0, quality=100)