我正准备将 RGB 颜色转换为 CMYK 以用于打印目的。
此转换的比例是 Adobe Photoshop (图像 -> 模式 -> CMYK 颜色)
我尝试了 2 个解决方案,但没有一个返回正确的值:
解决方案 1 - 使用 .NET Framework
一开始,我是按照这些步骤操作的
从 Adobe 下载 ICC 配置文件(windows 版本)
转换
#color
to CMYK使用
System.Windows.Media.Color.FromValues//返回颜色
MSDNstring convretedColor = string.Format("#{0:X2}{1:X2}{2:X2}", _color.R, _color.G, _color.B)
结果如下:
配置文件:
CoatedFOGRA27.icc
原始颜色:
#2f00ff
转换后的颜色:
#3b4996
使用 Adobe Photoshop(相同配置文件)的转换结果:
#3b4996
not even close!
解决方案 2 - 使用 Windows 颜色系统 (WCS)
我也尝试了 Codo's solution同样的流程
结果如下:
配置文件:
CoatedFOGRA27.icc
原始颜色:
#2f00ff
转换后的颜色:
#2032FF
Photoshop:
#3b4996
编辑
根据 Codo 的评论,我认为我在理解颜色概念方面存在一些基本问题!! (如有错误请指正)
对于任何颜色,我们都有不同的颜色模型,RGB
,CMYK
,...
RGB
显示生成颜色的 (Red Green Blue) 和 CMYK 的组合 (Cyan Magenta Yellow * )。这些模型的值可以很容易地相互转换。
RGB 十六进制:
#2F00FF
RGB:
47 - 0 - 255
CMYK:
0,816 - 1,000 - 0,000 - 0,000
几乎所有显示器都使用 RGB
来显示颜色。打印的颜色(因为使用 Ink 而不是 LED o ...)与您在显示器上看到的颜色完全不同/
对于这个问题,像Photoshop这样的图像编辑器使用CMYK **MODE**
。在这种模式下,如果您选择RGB
颜色,编辑器会将其转换为颜色您在打印后看到并显示到屏幕上。此转换完全取决于颜色配置文件(此处为 ICC)
编辑 2
最佳答案
让我试着帮你解决这一切:
1) RGB 是一种描述颜色值的格式。即:红色为 255,0,0。
2) HSV 是另一种描述颜色值的格式。即:红色为 0,100,100
只有这两个可以为您提供数字准确的颜色,
您可以将它们视为颜色的数字表示,或者它是真正的 DNA,感谢上帝,显示器能够呈现它们 - 完全按照它们的本来面目呈现。
让我们继续:
3) Lab 是另一种描述颜色值的格式。
54,81,70 对于红色 RGB 是 (255,0,0) 然而..
54,81,70也可以应用于不同的RGB.. (254,0,0)
这是为什么呢?因为 Lab 格式旨在接近人类视觉。
对于人眼来说,(255,0,0) 和 (254,0,0) 之间没有区别
嗯..对于人眼来说不是很准确..
更准确地说是用来获得 Lab 颜色的模型,它打算......
4) CYMK 旨在告诉打印机将青色、黄色和品红色的哪种混合物压印到纸张上,以及 K(深色或黑色)指示在该混合物中压印多少深色。
所以 0%,100%,100%,0% 将为我们提供红色的混合物..
0%、50%、50%、0% 会给我们粉红色。
让我们继续:
您的努力是将显示器中看到的 RGB 调整为打印机的 CMYK。
天知道你为什么要这样做,因为它已经全自动并由司机处理多年了..
但我假设你有你的理由,所以让我们继续,
每台打印机都有略微不同的 CMYK 值,可以混合以获得特定的红色。
这就是 ICC 配置文件发挥作用的地方。
例如,他们通过提供 (1) 原始 RGB-RED 的表格来给出 RED 的标准
(2) 特定打印机中的 CMYK 红色。
因此,根据 ICC 配置文件从 RGB(红色)转换为 CMYK(红色)是符合逻辑的。
但如果您尝试转换回来 - 您会注意到根据特定配置文件的 RED CMYK 可以具有多个数字 RED 值。
这是因为数字颜色分辨率比结果准确得多 打印纸,另一种看待它的方式是说可以在 Lab 上构建特定的打印机 ICC。
现在我知道了..我知道了..你可能已经知道了大部分,如果不是全部的话。
(我写它只是为了确保我们都在书中的同一页上。)
因此,当您说“它们都没有返回正确的值”时 (假设它们 = 转换)你到底是什么意思?! 对我来说一切似乎都是正确的,因为事实上它们确实返回了正确的值 - 用于打印目的。
关于c# - 将 RGB 转换为 CMYK,使用 ICC 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18272797/