【发布时间】:2010-04-20 16:09:01
【问题描述】:
我在将 CMYK 颜色转换为 RGB 时遇到问题。 在互联网上有很多公式可以转换它,但例如当我将 CMYK (0,100,100,0) 转换为 RGB 时,它得到值 (255 0 0) 但在 Adobe Photoshop RGB 值是 (237,28,36) 我想要这个。有人知道如何用 java 或 .NET 转换它吗?
【问题讨论】:
我在将 CMYK 颜色转换为 RGB 时遇到问题。 在互联网上有很多公式可以转换它,但例如当我将 CMYK (0,100,100,0) 转换为 RGB 时,它得到值 (255 0 0) 但在 Adobe Photoshop RGB 值是 (237,28,36) 我想要这个。有人知道如何用 java 或 .NET 转换它吗?
【问题讨论】:
还有其他问题问同样的事情:
您的问题的一般要点是 Photoshop 正在应用颜色配置文件,因为您只是在进行直接转换。请看我对其他一些问题的回答,因为我觉得我已经回答了这个问题。
【讨论】:
如果您想要好的结果,您需要应用颜色配置文件。在 .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,则在同一命名空间中有专门的类。
【讨论】:
如果你想要像 cmyk 这样的 photoshop 转换然后使用 JDeli java 图像库;有一个名为 EnumeratedSpace 的类可以为您完成这项工作;
请不要忘记位掩码,因为返回值是 rgb 字节
【讨论】:
ColorJizz 可以将 RGB 转换为 CMYK 和许多其他格式。那里有一个 .NET 版本。
【讨论】: