小智 10
从RGB到CMYK的转换取决于用于放置CMYK墨水的物理设备/过程.这些在软件中表示为颜色配置文件. 物理设备的ICC和ICM颜色配置文件决定了最终的颜色.
如果您不关心物理设备上的真实表示,请在其他帖子中使用直接转换公式.
但是,如果您关注这一方面,那么您需要使用Windows Color Management API或类似LittleCMS之类的东西为您进行颜色转换(因为它们在转换过程中应用了正确的颜色配置文件).
查看此链接: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)
如果要获得良好的结果,则需要应用颜色配置文件.在.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,则在同一名称空间中有特殊类.
| 归档时间: |
|
| 查看次数: |
30957 次 |
| 最近记录: |