将RGB颜色转换为CMYK?

Jun*_*per 8 c# photoshop rgb cmyk

我正在寻找一种算法将RGB颜色转换为CMYK.Photoshop正在执行以下转换:

R = 220 G = 233 B = 174

C = 15 M = 0 Y = 40 K = 0

小智 10

从RGB到CMYK的转换取决于用于放置CMYK墨水的物理设备/过程.这些在软件中表示为颜色配置文件. 物理设备的ICCICM颜色配置文件决定了最终的颜色.

如果您不关心物理设备上的真实表示,请在其他帖子中使用直接转换公式.

但是,如果您关注这一方面,那么您需要使用Windows Color Management API或类似LittleCMS之类的东西为您进行颜色转换(因为它们在转换过程中应用了正确的颜色配置文件).


37S*_*ars 7

查看此链接:http : //www.codeproject.com/KB/applications/xcmyk.aspx。它给出了这个公式。

Black   = minimum(1-Red,1-Green,1-Blue)
Cyan    = (1-Red-Black)/(1-Black)
Magenta = (1-Green-Black)/(1-Black)
Yellow  = (1-Blue-Black)/(1-Black) 
Run Code Online (Sandbox Code Playgroud)

  • 同样重要的是要注意,上述公式假设红色、绿色和蓝色已经标准化(在 0.0 和 1.0 之间)。 (5认同)
  • 注意:虽然转换很接近,但大多数时候它与 Photoshop 不匹配。比较 Photoshop 中生成的颜色通常也会产生不同的结果。没有直接的转换,但通常足够接近。 (2认同)

Cod*_*odo 5

如果要获得良好的结果,则需要应用颜色配置文件.在.NET中,您可以这样做(假设原始CMYK组件在0到255之间):

float[] colorValues = new float[4];
colorValues[0] = c / 255f;
colorValues[1] = m / 255f;
colorValues[2] = y / 255f;
colorValues[3] = k / 255f;

System.Windows.Media.Color color = Color.FromValues(colorValues,
    new Uri(@"C:\Users\me\Documents\ISOcoated_v2_300_eci.icc"));
System.Drawing.Color rgbColor = System.Drawing.Color.FromArgb(color.R, color.G, color.B);
Run Code Online (Sandbox Code Playgroud)

请注意,使用来自两个不同命名空间的两个不同的Color类.您可能需要添加PresentationCore DLL作为参考.

可以从eci.org的下载部分下载所需的颜色配置文件.它是包含多个配置文件的更大ZIP文件的一部分.他们明确建议使用ISO Coated v2 300%(ECI)配置文件.

如果需要将完整图像从CMYK转换为RGB,则在同一名称空间中有特殊类.

  • 问题是从 RGB 转换为 CMYK,而不是相反。 (2认同)