【问题标题】:RGB to CMYK Conversion AlgorithmRGB 到 CMYK 转换算法
【发布时间】:2018-07-04 13:17:19
【问题描述】:

我需要像在 Adob​​e Photoshop/Mac ColorPicker 中一样将 RGB 值转换为 CMYK。 RGB 中的所有颜色都无法在 CMYK 中实现。但是我发现的算法,例如rgbtocmyk 并没有产生我期望的结果。例如:CMYK 不支持最纯净的蓝色 rgb(0,0,255)。在这种情况下,我需要找到 CMYK 色域支持的最接近的蓝色。你能给我任何关于它或使用的算法的参考吗?

【问题讨论】:

    标签: javascript html adobe color-picker color-palette


    【解决方案1】:

    这根本不是真的。所有 RGB 颜色都可以表示为 CMYK,但不能相反。您发送的链接有效,但似乎 R、G、B 三个分量的范围是 [0,255],而 C、M、Y、K 四个分量的范围是 [0,1]。这很常见,RGB 坐标表示为整数,CMYK 表示为浮点数。您可以在网络上找到的几乎所有算法都可以这样工作。

    PS:这里是算法的示例实现,http://www.javascripter.net/faq/rgb2cmyk.htm

    编辑

    详细解释可能会很长,但我们开始吧。一方面,您拥有每种颜色的成分。另一方面,您可以在设备上显示某种颜色。由于每种颜色在物理上都是波长的函数,因此 RGB 表示是该函数的粗略近似。

    当您需要在设备上匹配某种颜色时,就会出现问题。例如,对于相同的 RGB 颜色,两个屏幕可以显示略有不同的颜色。为了克服在给定设备上将颜色与显示值进行感知匹配的困难,存在所谓的颜色配置文件,它指定设备如何匹配 RGB(或 CMYK,或 LAB,或您使用的任何颜色系统)坐标与实际显示的颜色。

    据我了解,您要执行的转换涉及颜色配置文件。此外,当我们说 RGB 时,我们通常指的是屏幕,而当我们说 CMYK 时,我们通常指的是打印机(CMYK 组件通常指定打印机用来表示颜色的墨水颜料量)。维基百科条目可以为您提供更多信息:https://en.wikipedia.org/wiki/Color_space

    最后让我指出,您要执行的转换涉及探索与相关设备关联的颜色配置文件,这并非易事。但是,RGB->CMYK 转换的第一步是使用我们首先讨论的简单算法进行直接转换。然后,根据需要应用颜色校正。

    【讨论】:

    • 我不认为所有的 RGB 颜色都可以表示为 CMYK。与 RGB 相比,CMYK 色彩空间是有限的。参考this
    • 您混淆了可见光谱和成分的数值。如果我们谈论色域,我们必须考虑色彩空间和所有颜色匹配的东西,这是一个广泛而复杂的主题。到目前为止,您只询问了数字转换,我为您指出了算法。
    • 是的,我想我很困惑。因为正如我在 Photoshop 和 Mac 颜色选择器中看到的,当切换到 CMYK 时,仅支持 CMYK 颜色空间内的颜色。 RGB 被转换为 CMYK 颜色空间中最接近的颜色。为什么转换算法不同?能详细解释一下吗?
    【解决方案2】:

    没有简单的 CMYK 颜色转换。而 CMYK 颜色的解释取决于印刷条件(油墨、纸张、打印机、印刷工艺等的组合)。这是因为油墨(或染料或任何其他着色剂)的混合物很难描述,就像光的混合物(这是 RGB 的基础)一样,如果不是更复杂的话。在实践中,通过打印 CMYK 色块并在受控的照明和测量条件下使用颜色测量设备测量这些色块来校准和表征给定的印刷条件。只有当打印条件被很好地表征时,RGB 和 CMYK 之间的准确转换才可能针对该打印条件进行。另见我的文章部分“CMYK and Other Ink-Mixture Color Models”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 2011-01-26
      相关资源
      最近更新 更多