使用ICC配置文件将RGB转换为CMYK

Mir*_*ine 10 c# colors converter cmyk color-profile

我打算将RGB颜色转换为CMYK用于打印目的.这种转换的规模是Adobe Photoshop( Image -> Mode -> CMYK color )

我尝试了2个解决方案,但没有一个返回正确的值:

解决方案1 ​​ - 使用.NET Framework

起初,我接着是这些步骤

  • Adobe下载ICC配置文件(Windows版本)

  • 转换#color 为CMYK

  • 使用System.Windows.Media.Color.FromValues // return Color MSDN

  • string convretedColor = string.Format("#{0:X2}{1:X2}{2:X2}", _color.R, _color.G, _color.B)

这是结果:

  • 简介: CoatedFOGRA27.icc

  • 原色: #2f00ff

  • 转换颜色: #3b4996

  • 转换结果使用Adobe Photoshop(相同的配置文件):#3b4996 甚至不关闭!

解决方案2 - 使用Windows Color System(WCS)

我也用相同的程序尝试了Codo的解决方案

这是结果:

  • 简介: CoatedFOGRA27.icc

  • 原色: #2f00ff

  • 转换颜色: #2032FF

  • Photoshop: #3b4996

JSFiddle进行比较

编辑

根据Codo的评论,我认为,我有一些理解颜色概念的基本问题!(如果我错了,请纠正我)

对于任何颜色,我们有不同的色款,RGB,CMYK,...

RGB显示(红绿蓝)组合产生颜色和CMYK(青色洋红黄色*).这些模型的值可以轻松转换为彼此.

例如:

  • RGB HEX: #2F00FF

  • RGB: 47 - 0 - 255

  • CMYK: 0,816 - 1,000 - 0,000 - 0,000

几乎所有的显示器都RGB用来显示颜色.印刷的颜色(因为使用墨水代替LED o ...)与你在显示器上看到的颜色完全不同/

对于这个问题,像Photoshop这样的图像编辑器使用CMYK **MODE**.在这种模式下,如果选择RGB颜色,编辑器会将其转换为打印后看到的颜色,并显示为屏幕.此转换完全取决于颜色配置文件(此处为ICC)

编辑2

在此输入图像描述

G.Y*_*G.Y 8

让我试着帮你整理一下:

1)RGB是描述颜色值的格式.即:红色为255,0,0.

2)HSV是描述颜色值的另一种格式.即:0,100,100为红色

这两个是唯一能够为您提供数字化准确颜色的颜色,
您可以将它们视为颜色的数字表示,或者它是真正的DNA,感谢上帝,显示器能够呈现它们 - 正是它们的本质.

让我们继续:

3)Lab是描述颜色值的另一种格式.

红色RGB为541,70,但是为(255,0,0)..但是,
541,70也可以应用于不同的RGB ..(254,0,0)

这是为什么?因为Lab格式旨在接近人类视觉.
并且对于人眼而言,(255,0,0)和(254,0,0)之间没有差别
......对于人眼来说并不是真的准确...
更准确地说正在使用的模型得到有意的实验室颜色..

4)CYMK旨在告诉打印机将青色,黄色和洋红色的混合物压在纸上,然后用K(键或黑色)压入多少黑色进入混合物.

所以0%,100%,100%,0%会给我们红色的混合物..
0%,50%,50%,0%会给我们粉红色.

让我们继续:

您的努力是将显示器中看到的RGB调整为打印机的CMYK.
上帝知道为什么你想要这样做,当它是全自动的并由驾驶员处理多年..
但我认为你有你的理由,所以让我们继续,
每个打印机有一个稍微不同的CMYK值混合到达那个特定的红色..

这就是ICC配置文件开始实施的地方.
它们通过提供(1)原始RGB-RED和(2)特定打印机中的CMYK红色表来为RED提供标准.

因此,根据ICC配置文件从RGB(红色)转换为CMYK(红色)是合乎逻辑的.

但是,如果您尝试转换回来 - 您会注意到根据特定配置文件的RED的CMYK可以具有多个数字RED值.

这是因为数字色彩分辨率比打印纸张更准确,另一种看待它的方式是说特定的打印机ICC可以建立在实验室上.

现在我知道了......我知道..你可能已经知道了大部分内容,如果不是全部的话.
(我写这封只是为了确保我们都在书中的同一页上.)

所以,当你说"他们都没有返回正确的价值"(假设他们=转换)你究竟是什么意思?!对我来说似乎都是正确的,因为实际上它们确实会返回正确的值 - 用于打印目的.


Eug*_*ene 3

正如我所看到的理论\xe2\x80\xa6

\n\n

CMYK本身的色域略小于RGB,因此直接RGB->CMYK转换后的差异将很容易看出。为了补偿不同的颜色配置文件的使用。内部的颜色配置文件实际上是一组颜色变换,可以扩大色域。在这种情况下,图像源只是这些变换的源。

\n\n

CMYK 几乎总是与颜色配置文件一起使用(我的意思是正确的用例),否则颜色损失将会很严重。

\n\n

在 Photoshop 中尝试在此处进行转换:编辑 -> 转换为配置文件。与您的方式的主要区别 - 您可以选择目标 CMYK 配置文件和颜色管理引擎(包括 Microsoft ICM),这可能会给您带来不同的结果。

\n\n

这是一篇关于 CMYK 的好文章:http://www.northlight-images.co.uk/article_pages/colour_management/cmyk_for_photographers.html

\n\n

至于编程...

\n\n

也许使用一些专门的图像处理SDK会更容易。色彩管理是其中任何一个的基本功能,甚至应该免费提供。

\n\n

如果您需要估计 RGB 颜色的实际打印方式,您需要使用名为 \xe2\x80\x9c 软打样\xe2\x80\x9d 的功能。这是 RGB -> CMYK(带打印机配置文件) -> RGB 转换。在 Photoshop 中,您可以在此处查看:查看 -> 校样颜色。您可以使用 SDK 执行相同的操作。

\n