当我只想在 JPG 和 PNG 之间转换时,为啥 ImageMagick 会改变图像亮度?

Posted

技术标签:

【中文标题】当我只想在 JPG 和 PNG 之间转换时,为啥 ImageMagick 会改变图像亮度?【英文标题】:Why ImageMagick changes image brightness when I simply want to convert between JPG and PNG?当我只想在 JPG 和 PNG 之间转换时,为什么 ImageMagick 会改变图像亮度? 【发布时间】:2018-04-07 21:06:39 【问题描述】:

我想将一些 JPG 图片批量转换为 PNG,所以我使用了以下 ImageMagick 命令:

convert before.jpg after.png

然而,事情并没有我计划的那么顺利。请看下面两张图片 - 第一张是before.jpg,第二张是after.png

你可以看到第二个比原来的要暗很多。

我正在使用 ImageMagick 6.9.9-19。

在 GIMP 中打开 JPEG 图像并将其导出为 PNG 会得到预期的结果 - 输出图像与原始图像相同。

我做错了什么?

编辑:使用 GIMP 重新保存 after.png 也会使图像与原始图像相同。

编辑: 即使在我使用 GIMP 保存 after.png 之后,使用 ImageMagick 重新转换也会再次破坏颜色 (convert after-gimp.png after-gimp-and-im.png)。

编辑: 转换为 sRGB 或 CMYK TIFF,甚至再次转换为 JPG,不会出现此问题。但是,我仍然需要 PNG。

【问题讨论】:

检查两个图像中的色彩空间。这可能与 sRGB 和 Adob​​e RGB 颜色格式有关。见此链接:***.com/questions/33142786/… @Zindarod - 不,两个图像都是 sRGB(由identify -verbose 报告)。 【参考方案1】:

根据 IM 6.9.9.20 Q16 Mac OSX compare -metric rmse GBooF.jpg geDxn.png null:,您发布的两张图片是相同的,它产生:0 (0)。您的查看器可能会以不同的方式显示 jpg 和 png,因为它们都没有 sRGB 配置文件。不过,通常假定 png 为 sRGB。

此外,我的查看器将您的两个图像显示为相同 --- 没有区别,在您在 Mac Safari 上的帖子和使用 Mac Preview 时。

尝试将 sRGB 配置文件添加到您的 jpg。然后转换。

convert GBooF.jpg -profile path2/sRGB.icc GBooF2.jpg
convert GBooF2.jpg GBooF2.png

看看那些观点是否相同。

【讨论】:

但是,正如 SO 在 cmets 中提到的那样,identify -verbose 命令显示两个图像的sRGB 色彩空间。 @Zindarod ImageMagick 假定为 sRGB,除非图像格式支持将 gamma=1 存储为线性。 JPG 不支持存储 gamma。在他的例子中,他的两个文件的像素值相同(根据比较),并且在我的 Safari 和 Mac Preview 上显示相同。因此,唯一可能的区别是任何特定查看器在没有 sRGB 配置文件时如何决定显示。在 jpg 和 png 中放置相同的配置文件应该会使它们在大多数设备上显示相同,因为它们现在对我们有一个明确的配置文件(并且像素数据是相同的)。 如果@Rogach 认为图像确实不同,并且可能已通过上传此处更改,那么他应该压缩文件并放置压缩文件的链接,以便其他人可以检查原始图像。

以上是关于当我只想在 JPG 和 PNG 之间转换时,为啥 ImageMagick 会改变图像亮度?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 jpg 和 png 没有在 R Shiny 上处理? [复制]

我只想在我的表的电子邮件列更新时制作一个表审计/影子表

为啥当我尝试检查套接字连接状态时应用程序崩溃?

使用缩略图从 JPG 转换为 PNG 时图像大小增加了两倍

为啥我的导航标签会在悬停时移动?我该如何解决?我只想使用 css,

视图控制器之间的交互转换?