我获取颜色的cmyk值并将其转换为RGB,此RGB颜色以html扩展名显示。但是颜色选择器显示RGB颜色的不同值,因为我们在颜色阴影中有所不同。我使用普通的java脚本方法将CMYK转换为RGB。
以下用于将CMYK转换为RGB的公式 -
CMYK到CMY
C = 1 - (R / 255)
M = 1 - (G / 255)
Y = 1 - (B / 255)
然后CMY TO RGB
R =(1 - C)* 255
G =(1 - M)* 255
B =(1 - Y)* 255
颜色选择器显示从正常功能计算出的不同颜色。
例如:颜色为红色。
一般
RGB:255,0,0
CMYK:0%,100%,100%,0%
HEXCODE:#FF0000
但是在插图画家双击颜色选择器时显示为
RGB:237,28,36
CMYK:0%,100%,100%,0%
HEXCODE:#ED1C24
那么,是否有任何方法或公式可以获得与颜色选择器计算的值相同的值。
请提前帮助,谢谢。
请找附件图片链接以供参考。
答案 0 :(得分:1)
CMYK到RGB转换:
R,G,B值的范围为0-255。
红色(R)颜色由青色(C)和黑色(K)颜色计算:
R = 255 × (1-C) × (1-K)
绿色(G)由品红色(M)和黑色(K)颜色计算:
G = 255 × (1-M) × (1-K)
蓝色(B)由黄色(Y)和黑色(K)颜色计算:
B = 255 × (1-Y) × (1-K)
答案 1 :(得分:1)
RGB到CMYK没有简单或一般的转换公式。基本上,RGB是关于光学颜色的存在,而CMYK是关于墨颜色的存在。增加R,G和B时,颜色会变亮,而CMYK通常会相反。我认为这两篇文章可以帮助您深入理解它们:Adobe RGB和Color space
问题在于,如果您想要像illustrator或photoshop这样的软件具有确切的值,则需要使用javascript中无法访问的ICC配置文件(请参阅此问题:Is there any client-side technology able to convert sRGB to CMYK through an ICC color profile?)。
然而,有一些数学转换,比如你做过,或者这个python version,它将CMYK转换为CMY然后转换为RGB(它们不是标准的ICC颜色):
C = C * (1.0 - K) + K
M = M * (1.0 - K) + K
Y = Y * (1.0 - K) + K
R = 255 * (1.0 - C)
G = 255 * (1.0 - M)
B = 255 * (1.0 - Y)
答案 2 :(得分:1)
在Illustrator脚本中,您可以在app.convertSampleColor()函数中使用。
此函数接收源和目标空间名称以及颜色值数组,并在目标空间中返回以插图画家精确转换的颜色数组。
答案 3 :(得分:-1)
请问我我的英语不好!!
我想出了自己的想法
问题在于CMYK青色会变成RGB的浅青色
并且CMYK PINK还返回RGB的实蓝
所以我添加了一些值:
IF CYAN > MAGENTA .. WE ADD 25% OF CYAN VALUE TO MAGENTA VALUE
ELSE IF CYAN < MAGENTA .. WE CUT 50% OF CYAN VALUE TO SHOW REAL-PINK
function CMYKTORGB1(_c, _m, _y, _k) {
var C = _c / 100; // THE PROBLEM THAT IT RETURNS LIGHT-CYAN IN RGB
var M = _m / 100;
var Y = _y / 100;
var K = _k / 100;
var _mc = 0;
if (_c > 0) {
if (_m >= _c) {
_mc = _c / 2;
C = (_c - _mc) / 100; // THIS WILL FIX BLUE-PINK VALUE
}
else {
_mc = _c / 4;
M = (_m + _mc) / 100; // THIS WILL FIX LIGHT-CYAN VALUE
}
}
var R = 255 * (1 - C) * (1 - K);
var G = 255 * (1 - M) * (1 - K);
var B = 255 * (1 - Y) * (1 - K);
if (R < 0) { R = 0; }
if (G < 0) { G = 0; }
if (B < 0) { B = 0; }
return [R, G, B];
}
function CMYKTORGB2(_c, _m, _y, _k) {
var C = _c / 100; // THE PROBLEM THAT IT RETURNS LIGHT-CYAN IN RGB
var M = _m / 100;
var Y = _y / 100;
var K = _k / 100;
var _mc = 0;
if (_c > 0) {
if (_m >= _c) {
_mc = _c / 2;
C = (_c - _mc) / 100; // THIS WILL FIX BLUE-PINK VALUE
}
else {
_mc = _c / 4;
M = (_m + _mc) / 100; // THIS WILL FIX LIGHT-CYAN VALUE
}
}
var _C = C * (1.0 - K) + K
var _M = M * (1.0 - K) + K
var _Y = Y * (1.0 - K) + K
var R = 255 * (1.0 - C)
var G = 255 * (1.0 - M)
var B = 255 * (1.0 - Y)
if (R < 0) { R = 0; }
if (G < 0) { G = 0; }
if (B < 0) { B = 0; }
return [R, G, B];
}