当我只想在 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 和 Adobe 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 上处理? [复制]