RGB 到 CMYK 转换算法

RGB to CMYK Conversion Algorithm

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

那根本不是真的。所有 RGB 颜色都可以用 CMYK 表示,但反之则不行。你发的link有效,但是好像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 转换的第一步是使用我们首先讨论的简单算法进行直接转换。然后,如果需要,应用颜色校正。

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