我需要像在Adobe Photoshop / Mac ColorPicker中一样将RGB值转换为CMYK。在CMYK中无法实现RGB中的所有颜色。但我发现的算法如rgbtocmyk确实产生了我期待的结果。例如:CMYK不支持rgb(0,0,255),这是最纯净的蓝色。在这种情况下,我需要找到CMYK色域支持的最近的蓝色。你能给我任何参考或使用的算法吗?
答案 0 :(得分: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转换的第一步是使用我们首先讨论的简单算法进行直接转换。然后,根据需要应用颜色校正。
答案 1 :(得分:0)
没有简单的CMYK颜色转换。 CMYK颜色的解释取决于打印条件(墨水,纸张,打印机,打印过程等的组合)。这是因为油墨(或染料或任何其他着色剂)的混合物描述起来非常复杂,与光的混合物(RGB是基于的)一样多,如果不是更多的话。在实践中,通过打印CMYK色块并在受控照明和测量条件下使用颜色测量装置测量这些色块来校准和表征给定的打印条件。只有当打印条件被充分表征时,才能对该打印条件进行RGB和CMYK之间的精确转换。另请参阅我的文章部分" CMYK and Other Ink-Mixture Color Models"。