我使用这个片段在javascript中将RGB颜色转换为CMYK:
function RgbToCmyk(R,G,B)
{
if ((R == 0) && (G == 0) && (B == 0)) {
return [0, 0, 0, 1];
} else {
var calcR = 1 - (R / 255),
calcG = 1 - (G / 255),
calcB = 1 - (B / 255);
var K = Math.min(calcR, Math.min(calcG, calcB)),
C = (calcR - K) / (1 - K),
M = (calcG - K) / (1 - K),
Y = (calcB - K) / (1 - K);
return [C, M, Y, K];
}
}现在,我要将返回的CMYK转换为百分比CMYK。
例如,这个RGB颜色(171,215,170)被转换成这个百分比的CMYK (34%,1%,42%,0)
(我用photoshop进行转换)
编辑:此片段的返回值介于0-1之间。我发现,我必须将这个片段更改为返回0-255之间的值,然后将值除以2.55,以获得cmyk颜色的百分比值。现在如何将此代码更改为在0-255范围内返回值?
发布于 2014-05-17 10:55:49
CMYK和RGB是两种不同的颜色模型(分别是相减模型和加法模型),因此需要有一个算法来转换值(以获得另一个系统中每个系统的最接近的等效值)。
我建议你看看这里:
RGB-到-CMYK颜色转换
使用这样的算法,您应该能够来回转换值,然后得到只需进行简单计算所需的百分比,例如,此函数将返回给定系统的百分比值:
function get_percentage(value, model){
if (model == "CMYK") return value; // CMYK values are 0-100 (if 0-1 just * 100)
if (model == "RGB" ) return (value/ 255)* 100;
}
// a call with the value of 66 in RGB model:
document.write( get_percentage( 66, "RGB"));希望能有所帮助,
发布于 2022-11-11 12:00:48
我使用这个函数:
function rgb2cmyk([rgb, a]: [number[], number]): [number[], number] {
const r = rgb[0] / 255;
const g = rgb[1] / 255;
const b = rgb[2] / 255;
const k = +(1 - Math.max(r, g, b)).toFixed(1);
const c = +((1 - r - k) / (1 - k) || 0).toFixed(1);
const m = +((1 - g - k) / (1 - k) || 0).toFixed(1);
const y = +((1 - b - k) / (1 - k) || 0).toFixed(1);
return [[c * 100, m * 100, y * 100, k * 100], a];
}https://stackoverflow.com/questions/22938896
复制相似问题