zoukankan      html  css  js  c++  java
  • CMYK图片转sRGB时,出现明显的色差的解决方案

    参考资料:

    https://imagemagick.org/discourse-server/viewtopic.php?t=36184

    https://www.imagemagick.org/discourse-server/viewtopic.php?t=16464

    https://www.zhihu.com/question/30419311 (各个 CMYK color profile 之间有哪些区别?)

    摘自网上的一段话

    也许它们是:

    1.具有嵌入式配置文件的CMYK。
    2. CMYK,没有嵌入式配置文件。

    (1)可以使用“ -profile sRGB.icc”而不是“ -colorspace sRGB”或“ -strip”进行转换。

    (2)需要猜测,例如分配CMYK配置文件,然后与(1)相同。

    也就是说,CMYK 图片分两种情况:

    1. 如果这个 CMYK 图片有配置文件(icc profile),在转换成 sRGB时,可以通过 -profile sRGB.icc 来进行色彩我转换。

    2. 如果这个 CMYK 图片不带配置文件(icc profile),那就只能先给这个 CMYK 图片指定一个配置文件, 然后再通过  -profile sRGB.icc 来进行色彩我转换,例如使用下面的这个命令:

    convert cmyrk.jpg -profile USWebCoatedSWOP.icc -profile sRGB.icc -colorspace sRGB srgb.jpg

    ---------------------------------------------------

    通过 identify.exe -verbose cmyk.jpg 可以查看一个 cmyk 图片是否带有 icc 配置文件。

    ---------------------------------------------------

    注意: 测试的时候发现一个优先级问题:

    convert -verbose cmyk3.jpg -profile sRGB.icc -colorspace sRGB rgb3.jpg (这个是想要的效果)

    convert -verbose cmyk3.jpg -colorspace sRGB -profile sRGB.icc rgb3.jpg

    测试发现, -profile 与 -colorspace 都存在时, -colorspace 需要放在 -profile 后面执行。

    ---------------------------------------------------

    经过查看 ImageMagick 的源代码,证实 MagickGetImageProfile() 的返回值需要 MagickRelinquishMemory() 释放。

  • 相关阅读:
    asp.net 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
    mvc EF 执行SQL语句
    MVC 自定义AuthorizeAttribute实现权限管理
    EF
    sql 、linq、lambda 查询语句的区别
    说说C#中的enum吧
    C# A窗口内容显示在B窗口中的方法
    C# 程序开始主要是写类和方法 的基本步骤和调用方法
    C# 文件流基本操作步骤
    Ghost命令使用方法
  • 原文地址:https://www.cnblogs.com/personnel/p/13624708.html
Copyright © 2011-2022 走看看