Question

What is the formula for converting a color encoded in CMYK to its hexadecimal equivalent?

Was it helpful?

Solution

I have bad news for you: there is no simple formula. Cyan, magenta and yellow are complex ink colours and the translation to RGB depends on colour profiles. To make things worse, the CMYK colour space is smaller than the RGB colour space. Some pointers on colour theory:

OTHER TIPS

It can be done with javascript:

//converts cmyk to hex
function cmykToHex(c,m,y,k) {
    var hex,
        rgb;
    //convert cmyk to rgb first
    rgb = cmykToRgb(c,m,y,k);
    //then convert rgb to hex
    hex = rgbToHex(rgb.r, rgb.g, rgb.b);
    //return hex color format
    return hex;
}
//converts cmyk color to rgb
function cmykToRgb(c, m, y, k) {
var rgb_r,
    rgb_g,
    rgb_b,
    cyan = 100 *Number(c),
    magenta = 100 * Number(m),
    yellow = 100 * Number(y),
    black = 100 * Number(m);
    0 < cyan ? cyan /= 100 : 0 < magenta ? magenta /= 100 : 0 < yellow ? yellow /= 100 : 0 < black && (black /= 100);
    rgb_r = 1 - Math.min(1, cyan * (1 - black) + black);
    rgb_g = 1 - Math.min(1, magenta * (1 - black) + black);
    rgb_b = 1 - Math.min(1, yellow * (1 - black) + black);
    rgb_r = Math.round(255 * rgb_r);
    rgb_g = Math.round(255 * rgb_g);
    rgb_b = Math.round(255 * rgb_b);
    return {r: rgb_r, g: rgb_g, b: rgb_b};
}
//converts rgb to hex
function rgbToHex(r, g, b) {
    return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
    function componentToHex(c) {
        var hex = c.toString(16);
        return hex.length === 1 ? "0" + hex : hex;
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top