Hi, On Nov 21, 2007 3:39 PM, Gael Varoquaux <[EMAIL PROTECTED]> wrote: > I have had some problems printing posters on a plot where indeed the > colors came out a bit wrong. I was told by the staff that it was because > the conversion RGB->CMYK was handled differently by different printers > and screens. I don't know if providing and ICC profile would solve the > problem, but it can't harm.
The ICC profile maps the device-dependent RGB (or CMYK) values stored in the plot to a device-independent color space (either CIE Lab or the equivalent XYZ). This independent color space describes *absolute* color - a point in Lab space is therefore intended to look the same on any screen or printer. When this profile is combined with a second ICC profile for the target screen or printer on which the plot is to be viewed/printed, it allows the color management software to convert the RGB values in the PDF to the appropriate RGB or CMYK values that will produce the intended absolute color on the target device. It is therefore important to realise that both RGB and CMYK are *relative* color spaces, relative to some device. The R, G and B values are merely weights mixing together the device's interpretation of true R, G and B (the same goes for CMYK). Some problems: - Devices produce different subsets of the set of all visible colors (the issue of color gamut). For example, CMYK printers struggle with highly saturated green. If you make an RGB plot on your LCD screen, a pure green line with color 'g' or 0x00FF00 may not ever come out the same way on your printer. - Matplotlib plots typically use an abstract concept of color. Lines are usually colored to distinguish them from each other, and frequently the absolute color is not that important. More importantly, there is typically no device associated with the input color (as is the case with images derived from scanners or digital cameras), and therefore no way to map the RGB relative values to absolute color. Possible solutions: - Use colors that are safe for printing and displaying (less saturated colors?). - Use Lab color, which is absolute. This is cumbersome, and RGB is much more commonplace and well-understood in plotting packages, including Matlab. - Associate a generic ICC profile with the mpl plot, to attach absolute color values to the RGB values in the plot in a consistent way. Maybe this is the default in many graphics file formats and therefore redundant, or maybe it does make a difference specifying it explicitly, I'm not sure. > Is this also possible for EPS, or are we stuck with the problem without a > good solution? As far as I can tell, you can embed ICC profiles in most graphic file formats, including PDF, EPS, JPG, PNG, SVG, TIFF, etc. Regards, Ludwig ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel