我即将RGB颜色转换为CMYK用于打印目的。
此转换的比例是Adobe Photoshop ( Image -> Mode -> CMYK color )
我尝试了2个解决方案,但没有一个返回正确的值:
首先,我接着执行了这些步骤
转换#color
to 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
not even close!
我也尝试了Codo's solution相同的程序
结果如下:
个人资料:CoatedFOGRA27.icc
原色:#2f00ff
转换后的颜色:#2032FF
Photoshop:#3b4996
根据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)
答案 0 :(得分:8)
让我试着帮助你解决所有问题:
1)RGB是描述颜色值的格式。即:红色为255,0,0。
2)HSV是另一种描述颜色值的格式。即:红色为0,100,100
这两个是唯一会给你数字准确颜色的,
您可以将它们视为颜色的数字表示,或者它是真正的DNA,感谢上帝,显示器能够呈现它们 - 完全是为了它们。
让我们继续前进:
3)Lab是描述颜色值的另一种格式。
红色RGB为541,而不是(255,0,0) 54,61,70也可以应用于不同的RGB ..(254,0,0)
为什么?因为Lab格式旨在接近人类视觉。
对于人眼而言,(255,0,0)和(254,0,0)之间没有区别
嗯...对于人眼来说并不是很准确。
更准确地说,正用于获得实验室颜色的模型...
所以0%,100%,100%,0%会给我们红色的混合物。
0%,50%,50%,0%会给我们粉红色。
让我们继续前进:
您的努力是将显示器中看到的RGB调整为打印机的CMYK
上帝知道为什么你想这么做,因为它是完全自动的并且由驾驶员多年来处理。
但我认为你有理由,所以让我们继续,
每台打印机都有一个稍微不同的CMYK值,可以混合以获得特定的红色..
这就是ICC简介发挥作用的地方..
他们通过提供(1)原始RGB-RED的表格为RED提供标准
(2)特定打印机中的CMYK红色。
因此,根据ICC配置文件从RGB(红色)转换为CMYK(红色)是合乎逻辑的。
但如果您尝试转换回来 - 您会注意到根据特定配置文件的RED的CMYK可以有多个数字RED值。
这是因为数字色彩分辨率比出来的更准确 打印纸,另一种看待它的方法是说特定的打印机ICC可以建立在Lab上。
现在我知道了......我知道..你可能已经知道了大部分内容,如果不是全部的话 (我写这篇文章只是为了确保我们都在书中的同一页上。)
所以,当你说“他们都没有返回正确的价值”时 (假设他们=转换)你究竟是什么意思?! 对我来说似乎都是正确的,因为实际上它们确实会返回正确的值 - 用于打印目的。
答案 1 :(得分:4)
我看到理论......
CMYK的色域本身略小于RGB,因此直接RGB-> CMYK转换后的差异将很容易看到。为了补偿使用差异颜色配置文件。内部颜色配置文件实际上是一组颜色变换,可以扩大色域。在这种情况下,图像源只是这些变换的来源。
CMYK几乎总是与颜色配置文件一起使用(我的意思是正确的用例),否则颜色损失将是显着的。
在Photoshop中尝试转换:编辑 - >转换为个人资料。与您的方式的主要区别 - 您可以选择目标CMYK配置文件和颜色管理引擎,包括Microsoft ICM,它可以为您提供不同的结果。
这是一篇关于CMYK的好文章:http://www.northlight-images.co.uk/article_pages/colour_management/cmyk_for_photographers.html
至于编程......
使用一些专门的图像处理SDK也许会更容易。色彩管理是其中任何一个的基本功能,即使是免费也应该可用。
如果您需要估算实际打印RGB颜色的方式,则需要使用称为“软打样”的功能。这是RGB - > CMYK(带打印机配置文件) - > RGB转换。在Photoshop中,您可以在此处查看:查看 - >证明颜色。您可以使用SDK执行相同的操作。
答案 2 :(得分:2)
这个(未经测试的)代码段可能会有所帮助 - 它使用.NET api ImageMagick。
MagickReadSettings settings = new MagickReadSettings();
settings.ColorSpace = ColorSpace.CMYK;
using (MagickImage image = new MagickImage())
{
image.AddProfile(ColorProfile.CMYK);
image.Read("image_rgb.tiff", settings);
image.Write("image_cmyk.tiff");
}
如果你可以使用命令行,这也可以完成这项任务:
convert image_rgb.tiff -profile "RGB.icc" -profile "CMYK.icc" image_cmyk.tiff