• ImageMagick


    今天在处理一张 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 这个处理方式有点让人接受不了, 开发者对此可操作的空间都没有了。

  • 相关阅读:
    PPT图片
    饥荒Steam相关mod代码
    Ubuntu20.04更换阿里源 source.list文件
    中断处理与进程调度的区别与联系
    原语和系统调用的区别
    立下个flag,这个月底之前要发一个深度学习入门系列的文章
    conda安装skimage
    机器学习入门(三)
    zip安装的MySQL绑定my.ini配置文件
    Anaconda配置安装
  • 原文地址:https://www.cnblogs.com/personnel/p/7979318.html
Copyright © 2020-2023  润新知