当前位置: 首页 > 面试题库 >

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

边浩波
2023-03-14
问题内容

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


问题答案:

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

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

Pascal Beyeler编辑:

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

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


 类似资料:
  • 我正在将一个rust应用程序打包到docker映像以部署到我的服务器。我发现rust docker的图像大小超过1GB(比使用java和python的任何其他应用程序都大)。为什么rust docker的形象如此巨大?我检查了该层,发现cargo build命令需要400MB以上的内存。 是否可以缩小rust docker的图像?

  • 问题内容: 试图在我的GUI窗口上显示来自互联网的图片。 到目前为止,我的代码是: 问题是我得到的只是一个应该显示图片的蓝色框。我该如何解决? 在Windows上使用python 3.3 问题答案: 现在这是一个疯狂的猜测,但是我只记得一个类似的问题。我能够以这种方式重现您的“蓝框”,所以这也可能是您的问题。我将尝试一下。 我假设PhotoImage是在其他某个范围内创建的(可能是一种方法或类似的

  • 问题内容: 在Android上,如何以30%的质量将图像文件另存为JPEG? 在标准Java中,我将使用读取图像,然后使用实例将其另存为JPEG文件:http : //www.universalwebservices.net/web-programming- resources/java/adjust-jpeg-image- compression在Java中保存图像时的质量 。但是,Androi

  • 我正在尝试在一个新的DICOM项目中使用dcm4che(最近的版本2.0.29)。我在尝试将DICOM文件转换为JPEG时出现以下错误。我找不到包含com.sun.medialib.codec.jpeg.decoder类的jar文件。谁能给我一个主意在哪能找到它? 这里是我的代码: 和控制台输出:

  • 我对图像文件的信息很少。 为了能够在Java中将PNG转换为JPEG,首先我使用了下面的代码部分来将PNG转换为JPEG:inverted 代码部分1) 但这一次,转换后的JPEG文件得到了倒置的颜色。 为什么会出现这种情况?

  • 问题内容: 我正在玩Python中的PIL库,并且想知道如何确定给定JPG图像的质量。我尝试打开JPG图像并对其进行处理,然后再次保存为原始质量。Image.save让我确定所需的质量: 但我看不出有任何方法可以提取原始内容。现在,我只是在猜测,并通过对’quality’参数进行二进制搜索来尝试具有与输入大小相同的输出文件,但这不是长期可接受的解决方法:) 我也尝试使用:Image.info但大多