码迷,mamicode.com
首页 > 其他好文 > 详细

ImageMagick - 智能的灰度空间(GRAYColorspace)让人窒息

时间:2017-12-04 23:30:47      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:style   www   span   strong   灰度   色彩   line   处理   修改   

今天在处理一张 gray.jpg 图片时,发现生成的图片色彩空间是: GRAYColorspace

可我在代码中明明设置了:

MagickWand * mw = NewMagickWand ();                
MagickReadImage (mw, "gray.jpg");
                
MagickSetImageType (mw, TrueColorType);
MagickSetImageColorspace (mw, sRGBColorspace);

MagickSetImageFormat(mw, "JPEG");
MagickWriteImage (mw, "gray-rgb.jpg")

  

为什么生成的图片(gray-rgb.jpg),色彩空间还是:GRAYColorspace

 

如果使用 convert.exe 就可以:

convert gray.jpg -type truecolor gray-rgb.jpg

生成的 gray-rgb.jpg ,色彩空间:sRGBColorspace

 

经过半天的google,基本上找到原因:

ImageMagick 内部编码器会根据当前的图片颜色数量,智能的优化,如果符合 GRAYColorspace,就自动设置为 GRAYColorspace,就算在代码中强制设置:

MagickSetImageType (mw, TrueColorType);
MagickSetImageColorspace (mw, sRGBColorspace);

都没有用!!!

 

后面又找到这个:http://www.imagemagick.org/script/command-line-options.php#define

其中提到通过下面的设置,来解决这个 ImageMagick 智能的选择 GRAYColorspace 的问题 :

MagickSetOption(magick_wand, "colorspace:auto-grayscale", "off");

MagickSetImageProperty (magick_wand, "colorspace:auto-grayscale", "off");

可我尝试了一下,发现没效果。

可能是我用的 ImageMagick 版本有点低, 6.8.9版。

网上提到的是 6.9.2+ 版可能才支持这个功能。

 

我去,这就难办了,因为 ImageMagick 如果升级到最新版,有很多地方的代码需要修改,实在不想改动。

ImageMagick 这个处理方式有点让人接受不了, 开发者对此可操作的空间都没有了。

 

ImageMagick - 智能的灰度空间(GRAYColorspace)让人窒息

标签:style   www   span   strong   灰度   色彩   line   处理   修改   

原文地址:http://www.cnblogs.com/personnel/p/7979318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!