In my quest to print large images, I discovered that most such places, as opposed to photo labs, only accept CMYK images.

While I consider myself an image processing expert, I realize there is a blatant gap in my knowledge around CMYK! I read this question which sums up mostly what I already knew.

What I need is to convert my sRGB images into CMYK images and understand how colors will be affected.

The first trouble point is that sRGB is a color-space based on an RGB representation and CMYK, AFAIK, is not a color-space but representation of colors. This tells me we need a CMYK color-space, preferably a common one since printers I talked to just said CMYK when I asked for a color-space.

Second, we need to establish how much of sRGB can be represented in a chosen CMYK color-space and determine how much precision (bit-depth) is needed for the representation.

The final question therefore is: How to losslessly convert and sRGB image into a CMYK one?


4 Answers 4


First of all, sRGB is a single color space, with defined boundaries and defined mappings from RGB values to (for example) CIE XYZ values, a specified viewing environment, etc.

CYMK, by contrast, is really a whole family of color spaces. All the color spaces in the family are subtractive, but you can't count on them having a lot in common beyond that. The exact colors of the primaries (i.e., the shade of cyan, magenta, yellow, and even black) vary. Since CMYK is used almost exclusively in printing, the color of the paper, brighteners, ability to accept ink, etc., all affect perceived color as well.

From a theoretical viewpoint, there's no question that conversion from RGB to CMYK can be completely lossless, so (for example) you can do a round-trip conversion (RGB to CMYk, then back to RGB) and guarantee that the result is identical to the original input.

From a practical viewpoint, CMYK (as noted above) is used almost exclusively for printing. That being the case, the real question is whether there's a real printer that can display the entire sRGB gamut. Although I could be mistaken on this, I believe the answer to that is no. In addition to that, it's difficult (probably impossible, really) to get exactly the same look on paper that you do on a monitor.

In particular, paper only reflects light that's shining on it, and the ink on the paper restricts the amount that's reflected. That means under normal lighting, what you see on the paper is always at least somewhat less bright than the ambient light.

A normal monitor emits light. Especially the higher-end monitors typically used for photo-editing are typically used in a relatively dark environment, and often have hoods as well. As a result, the monitor is typically brighter than ambient.

A gallery will typically attempt to display prints a bit more as you see them on a monitor, with lighting directed on the picture that's substantially brighter than ambient. Proofing boxes generally do roughly the same.

Bottom line: even though sRGB to CMYK can be lossless, it normally isn't -- and since it's normally for printing, really shouldn't be, except in the rare (nonexistent?) case of a printer that covers the entire sRGB gamut.

  • \$\begingroup\$ Thanks Jerry! This answers my question and matches what I knew already. This does open plenty of tangential questions which I'll probably formulate soon. \$\endgroup\$
    – Itai
    Commented Apr 19, 2011 at 1:24

I haven't done the math, but I believe there is a lossless RGB to CMYK transform, just as there is from RGB to Lab or RGB to HSL and back. I believe you just want to ignore the black channel, and reflect the R, G, and B channels across the color cube.

The thing is, in what way would that be useful? No one makes CMYK images with the intent of showing them on a device with a gamut like that of a computer display. Their purpose is to go to print, and there can be no lossless RGB to print transform.

This is because paper is a reflective medium and computer displays are a transmissive medium. The latter make their own light, whereas paper and ink can only reflect light it receives. You cannot make the move from one to the other losslessly.

If your imaging program of choice changes the colors you see on the monitor when going from RGB to CMYK, that's a good thing. It is trying to model the type of color shifts you will see when you actually make the print. This may save you a trial or two, because you can counteract the color shifts, or at least plan for them, ahead of time.

  • \$\begingroup\$ Since white-paper reflects all wave-lengths, why can't it show all possible colors? From what I've been reading, it seems the gamut of paper is extremely large (dynamic-range though is not, which is another topic entirely). \$\endgroup\$
    – Itai
    Commented Apr 18, 2011 at 13:39
  • \$\begingroup\$ I don't know why, I just know that it is so. (If it weren't, you'd think someone would build a printer, paper, and ink system that demonstrates a monitor-equivalent gamut.) It sounds like a fine separate question, however. \$\endgroup\$ Commented Apr 18, 2011 at 13:55
  • \$\begingroup\$ @Itai The limit on the gamut is the number of inks you use. To get a wider gamut, you add more colors of ink, 7 and even 9 color rips are fairly common in the pre-press world. CcMmYKkRG for example is a common 9 color setup, adding half Cyan, half Magenta, half blacK, Red and Green to the standard Cyan, Magenta, Yellow and blacK. There is also a very common technique where you supplement standard CMYK with a single spot color to get some corporate logo with just the right trademarked color that's difficult to accurately render in CMYK with a smooth texture. \$\endgroup\$
    – cabbey
    Commented Apr 18, 2011 at 19:03
  • \$\begingroup\$ Any half colors are added only to reduce visible dots in very light colors. Those do not expand the gamut at all. However, addition of inks that add extra primaries (such as bright red or bright green) may expand the gamut because there's a limit on how saturated the ink can be. \$\endgroup\$ Commented Apr 18, 2013 at 6:24

When talking "CMYK", your talking a completely different language than RGB, the range of gamuts there tends to be rather diverse and device dependent. I would say its less about "lossless" conversion, and more about properly converting an RGB image to the right mix of CMYK inks for each pixel. There WILL be loss, but when a final print is viewed, the differences will hardly be noticeable (if at all.) Every printer is different, and each uses different types of ink, each ink color will be slightly different between printers, printed ink density will differ, and the way ink is dispersed on paper is different (it may be dithered, or it may be half-toned.)

Generally, conversion to CMYK is a meticulous process involving at least a moderate understanding of how the image will actually be printed by the specific printer in use. CMYK is indeed a color space, however the gamut of that space is device-dependent, and usually smaller than the gamut of the computer screen you are working with. Proofing, both hard and soft, is a critical step in properly converting an RGB image into CMYK for accurate reproduction.

  • 1
    \$\begingroup\$ Hmmm... some fundamental definitions are needed. To me, a color-space is largely defined by a gamut. Otherwise, couldn't sRGB and AdobeRGB could be the same color-space with different gamuts? \$\endgroup\$
    – Itai
    Commented Apr 18, 2011 at 3:58
  • 1
    \$\begingroup\$ There is a third variable involved, 'color model' - en.wikipedia.org/wiki/Color-space \$\endgroup\$
    – user1774
    Commented Apr 18, 2011 at 9:44
  • 1
    \$\begingroup\$ The definitions of the term "color space" is not quite that clear cut. In some circles, color spaces are things like "Lab space", "RGB space", "CMYK space", where as "additive" and "subtractive" are models. Other circles refer to RGB and CMYK as models, and specific gamuts as color spaces. I think my meaning can be clearly derived from context. \$\endgroup\$
    – jrista
    Commented Apr 18, 2011 at 11:50

AFAIK, there isn't a way to losslessly convert between a color in sRGB to a color in CMYK. Given that each color space will represent a different gamut, there is no exact way to convert between one color to another, without some amount of estimation/approximation.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.