我在ImageMagick(使用Perlmagick:我打开PNG图片,调整它并保存它(时遇到了一些令人困惑的行为。
都很好,除了结果图像颜色略有不同。
- 原始图像
- 处理的图像
# Create the ImageMagick object.
my $magick = Image::Magick->new;
eval {
$magick->BlobToImage( $image );
};
$magick->Scale( ... );
# ...and then save it.
但是,如果我手动将图像的颜色空间设置为" RGB",请在保存之前,图像是相似的颜色;
$magick->Colorspace( colorspace => 'RGB' );
为什么这是?
编辑:如果我做完全相同,除了手动设置颜色空间,但在保存之前转换为jpeg,颜色会变得正确。更令人困惑。: -/
使用Image::Magick
以PNG格式保存图像时,通过将gm identify -verbose modified.png
的输出与gm identify -verbose original.png
的输出进行比较,添加了GAMA块,可以看到:
$ fc Original.info modified.info***** Original.info 标准偏差:18869.16(0.2879( 文件大小:613.0KI 交叉:不*****修改 标准偏差:18869.16(0.2879( 伽玛:0.45455 色度: 红主:(0.64,0.33( 绿色初选:(0.3,0.6( 蓝主:(0.15,0.06( 白点:( 0.3127,0.329( 文件大小:614.2KI 交叉:不*****
文件中的RGB颜色 values 在文件中相同,但是第二个文件中保存的伽马校正信息使其与原始显示的显示略有不同。这就是为什么将图像转换为JPG"解决"问题的原因:它删除了伽马校正信息。
查看ImageMagick源代码,使用:
实现剥离SetImageArtifact(image,"png:exclude-chunk", "bKGD,cHRM,EXIF,gAMA,iCCP,iTXt,sRGB,tEXt,zCCP,zTXt,date");
因此,我推荐OP尝试:
$magick->Set(option => "png:exclude-chunk=gAMA");
在他的Perl计划中,OP报告了解决问题。
相关信息:
libpng docs
修复PNG伽玛
PNG伽玛"更正"的悲伤故事
为什么此PNG图像在Chrome&Firefox比Safari和IE?