如何将RGB或CMYK颜色转换为百分比CMYK - JavaScript



我使用此代码片段在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 范围内的值?

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"));

希望它有所帮助,

我使用这个函数:

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];
}

最新更新