29

使用 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 创建的质量差。有人知道为什么会发生这种情况以及如何解决吗?

4

1 回答 1

50

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

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

帕斯卡·贝耶勒编辑:

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

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

再次编辑:

subsampling选项最终被记录在案,但我不知道这种情况持续了多长时间。看起来您可以选择整数参数或字符串;我仍然推荐0如上所示。

https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html#jpeg

于 2013-10-10T18:50:25.913 回答