将CMYK颜色转换为RGB时遇到问题。 在互联网上有很多公式来转换它,但例如当我将CMYK(0,100,100,0)转换为RGB时,它获得值(255 0 0),但在Adobe Photoshop RGB值是(237,28,36),我想要这个。有人知道如何用java或.NET转换它吗?
答案 0 :(得分:4)
还有其他问题要求同样的事情:
问题的一般要点是Photoshop正在应用颜色配置文件 - 因为您只是在进行直接转换。请看我对其他一些问题的回答,因为我觉得我已经回答了这个问题。
答案 1 :(得分:2)
如果您想获得良好的效果,则需要应用颜色配置文件。在.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);
请注意,使用来自两个不同命名空间的两个不同的 Color 类。您可能需要添加 PresentationCore DLL作为参考。
可以从eci.org的下载部分下载所需的颜色配置文件。它是包含多个配置文件的更大ZIP文件的一部分。他们明确建议使用 ISO Coated v2 300%(ECI)配置文件。
有一个不错的网站显示CMYK to RGB color conversion的颜色配置文件正在运行。
如果您需要将完整图像从CMYK转换为RGB,则在同一名称空间中有特殊类。
答案 2 :(得分:0)
如果你想像cmyk转换那样的photoshop那么使用JDeli java图像库;有一个名为EnumeratedSpace的类可以帮你完成工作;
请不要忘记位掩码,因为返回值是rgb bytes
答案 3 :(得分:-1)
ColorJizz可以从RGB转换为CMYK和许多其他格式。那里有一个.NET版本。