How to convert RGB to CMYK in C++

1 Answer

0 votes
// CMYK = Cyan, Magenta, Yellow, Key(black)
// RGB = Red, Green, Blue
  
#include <iostream>
#include <cmath>

struct CMYK {
    float C;
    float M;
    float Y;
    float K;
};

struct CMYK RGBtoCMYK(float R, float G, float B) {
    struct CMYK cmyk;
 
    if (R == 0 && G == 0 && B == 0) {
        cmyk.C = 0;
        cmyk.M = 0;
        cmyk.Y = 0;
        cmyk.K = 1;
 
        return cmyk;
    }
 
    R = R / 255;
    G = G / 255;
    B = B / 255;
 
    float max = R;
 
    if (max < G)
        max = G;
    if (max < B)
        max = B;
 
    float white = max;
 
    cmyk.C = ((white - R) / white) * 100;
    cmyk.M = ((white - G) / white) * 100;
    cmyk.Y = ((white - B) / white) * 100;
    cmyk.K = (1.0f - white) * 100;
    
    return cmyk;
 
}

int main() {
    struct CMYK cmyk = RGBtoCMYK(245.0f, 213.0f, 0.0f);

    std::cout << "Cyan: " << round(cmyk.C) << "\n";
    std::cout << "Magenta: " << round(cmyk.M) << "\n";
    std::cout << "Yellow: " << round(cmyk.Y) << "\n";
    std::cout << "Black: " <<  round(cmyk.K) << "\n";
}



  
  
/*
run:
  
Cyan: 0
Magenta: 13
Yellow: 100
Black: 4

*/

 



answered Jan 31, 2023 by avibootz
edited Jan 31, 2023 by avibootz

Related questions

1 answer 111 views
111 views asked Jan 30, 2023 by avibootz
1 answer 112 views
112 views asked Jan 31, 2023 by avibootz
1 answer 103 views
103 views asked Jan 30, 2023 by avibootz
1 answer 140 views
140 views asked Feb 2, 2023 by avibootz
1 answer 153 views
153 views asked Feb 1, 2023 by avibootz
1 answer 151 views
151 views asked Feb 1, 2023 by avibootz
1 answer 155 views
155 views asked Jan 31, 2023 by avibootz
...