为什么在使用Perl'处理PNG图像时,颜色配置文件/空间会发生变化;魔术师?

为什么在使用Perl'处理PNG图像时,颜色配置文件/空间会发生变化;魔术师?,perl,imagemagick,Perl,Imagemagick,我在ImageMagick中遇到了一些相当令人费解的行为(使用:打开PNG图片,调整大小,然后保存它) 所有这些都很好,只是生成的图像颜色“略有不同” #创建ImageMagick对象。 my$magick=Image::magick->new; 评估{ $magick->BlobToImage($image); }; $magick->Scale(…); #…然后保存它。 但是,如果我在保存之前将图像的颜色空间手动设置为“RGB”,则图像在颜色方面是相似的 $magick->C

我在ImageMagick中遇到了一些相当令人费解的行为(使用:打开PNG图片,调整大小,然后保存它)

所有这些都很好,只是生成的图像颜色“略有不同”

#创建ImageMagick对象。
my$magick=Image::magick->new;
评估{
$magick->BlobToImage($image);
};
$magick->Scale(…);
#…然后保存它。
但是,如果我在保存之前将图像的颜色空间手动设置为“RGB”,则图像在颜色方面是相似的

$magick->Colorspace( colorspace => 'RGB' );
为什么会这样


编辑:如果我做了完全相同的操作,除了手动设置颜色空间,但在保存之前转换为JPEG,颜色就会变得正确。更令人费解的是:-/

当使用
image::Magick
以PNG格式保存图像时,通过将的输出与
gm的输出进行比较,可以看到添加了一个-verbose original.png
显示:

$ fc original.info modified.info ***** original.info Standard Deviation: 18869.16 (0.2879) Filesize: 613.0Ki Interlace: No ***** MODIFIED.INFO Standard Deviation: 18869.16 (0.2879) Gamma: 0.45455 Chromaticity: red primary: (0.64,0.33) green primary: (0.3,0.6) blue primary: (0.15,0.06) white point: (0.3127,0.329) Filesize: 614.2Ki Interlace: No ***** 因此,我建议尝试以下操作:

 $magick->Set(option => "png:exclude-chunk=gAMA");
在他的Perl程序中,OP报告它解决了这个问题

有关资料:


当使用
image::Magick
以PNG格式保存图像时,通过将的输出与
gm identifite-verbose original的输出进行比较,可以看到添加了一个。PNG
显示:

$ fc original.info modified.info ***** original.info Standard Deviation: 18869.16 (0.2879) Filesize: 613.0Ki Interlace: No ***** MODIFIED.INFO Standard Deviation: 18869.16 (0.2879) Gamma: 0.45455 Chromaticity: red primary: (0.64,0.33) green primary: (0.3,0.6) blue primary: (0.15,0.06) white point: (0.3127,0.329) Filesize: 614.2Ki Interlace: No ***** 因此,我建议尝试以下操作:

 $magick->Set(option => "png:exclude-chunk=gAMA");
在他的Perl程序中,OP报告它解决了这个问题

有关资料:


@SinanÜnür:
Sample
给出了相同的结果。正在使用的ImageMagick版本:ImageMagick 7.0.5-5 Q16 x86@u 64toreau,您可能有一双非常好的眼睛,因为对我来说,两者看起来都是一样的!使用
标识-详细
检查两者时,我也注意到除了原始版本中不存在的gamma块之外,没有其他区别,并且
cHRM
bKGD
。Gamma原版本为0.4545,新版本为0.4545。颜色空间相同。可能我们的系统或查看程序对此的反应不同。我使用的是Mac OSbtw@SinanÜnür:奇怪。它们对我来说绝对不同,我还试图在OSX中更改颜色配置文件,看看是否有“匹配”配置文件。运气不好;它总是不同的。另外,请参阅我的编辑关于转换为JPEG“修复了问题。"是的,我一直在两者之间切换,然后仔细观察,但对我来说没有区别。JPEG很有趣。问题是,我也没有看到图像之间元数据的任何相关差异。你确定在imgur样本中得到了相同的差异吗?抱歉!另请参见和。@SinanÜnür:
样本
给出了相同的结果。ImageMagick v正在使用的版本:ImageMagick 7.0.5-5 Q16 x86@64toreau,您可能有一双非常好的眼睛,因为对我来说两者看起来都一样!使用
identification-verbose
检查两者时,我也注意到除了原始版本中不存在的gamma块之外,没有其他区别,
cHRM
bKGD
。gamma在原始版本中为0.4545新的是0.45455。颜色空间是一样的。也许我们的系统或观看程序对此的反应不同。我在Mac OS上btw@SinanÜnür:奇怪。它们对我来说绝对不同,我还尝试在OSX中更改颜色配置文件,看看是否有任何“匹配”配置文件。不幸的是,它总是不同的。另外,请参阅我的编辑关于转换为JPEG“修复了问题。”是的,我一直在翻页,然后仔细观察,但对我来说没有什么不同。JPEG很有趣。问题是,我也没有看到图像之间元数据的任何相关差异。你确定你在imgur样本中得到了相同的差异吗?抱歉!另请参见和。回答很好,非常感谢!但是,它并没有说太多关于“为什么”和“做什么”…?:)
Strip
不是一个选项;它删除了太多对颜色非常重要的信息,以及其他内容。
$magick->Set(选项=>“png:exclude chunk=gAMA”);
给了我正确的颜色。但这对我还是没有多大帮助;为什么ImageMagick要添加这一块?我从来没有要求过它?回答得很好,非常感谢!但是,它没有说太多“为什么”和“做什么”"...? :)<代码>条带
不是一个选项;它删除了太多对颜色非常重要的信息为我提供正确的颜色。但这对我还是没有多大帮助;为什么ImageMagick会添加此块?我从来没有要求过?