Hello Jason,
To resolve the problem of mismatch between screen and printer, color management should be used. Before I give recommendations how to use it in Graphics Mill I would like to provide some background details.
ChallengeI think it makes no sense to comment why colors are looking different on different devices. It is obvious - monitors has different characteristics, printers has inks of different mixture, etc. The same RGB or CMYK values cannot be looking at different devices in the same way. It is especially concerns the difference between monitor and printer. Colors has absolutely different nature, shortly speaking, monitor colors are mostly RGB and printer colors are in CMYK (or more complex color space). As well-known, conversion between RGB and CMYK is ambiguous. More over, some colors which can be displayed at monitor cannot be reproduced by printer and vice versa.
That leads us to the problem: how to define rules of conversion between color values of one device to values of another. If the color cannot be represented on another device, how to eliminate visual shifts.
SolutionYou see the problem is quite non-trivial. To resolve it leading manufactures of products concerned with colors and imaging organized special institution: International Color Consortium (ICC). They defined a special format of files that describes a set of rules of conversing colors between colors of one device to another. Such files are known as
ICC profiles.
This format is quite complex and only few software vendors has implemented support of ICC profiles. I know three implementations: Microsoft ICM, Adobe's system (used in Photoshop), and one open-source implementation. Microsoft ICM 2.0 is a part of WinAPI and Graphics Mill uses this system to provide color management.
The idea of using color management is a following:
- We have a source image which you should to convert to another device colors, or just display.
- We need to get a destination image which is converted to the device colors (or displayed on monitor with correct colors).
To apply a correction, we need two ICC profiles:
- Input profile - profile of the device where source image is considered to be looking ok.
- Output profile - profile of the destination device.
Color management system (e.g. Microsoft ICM 2.0) uses these profiles to calculate tables of translation colors between these device color values. After such tables are built, it applies conversion using them.
More Practice: How Does It Applicable To Graphics Mill?As mentioned above, Graphics Mill uses Microsoft ICM 2.0. It is quite tricky system of functions, but fortunately Graphics Mill allows working with them easily with no headache.
First of all, you should enable color management. It is done with this line:
Code:objBitmap.Data.ColorManagement.IsEnabled = True
After you have enabled color management, we should set up our profiles. As described above, for successful color conversion two profiles are necessary.
Input profile is usually embedded into the image file; most real-life JPEGs and TIFFs already have it. It is available through property DataProfile. If no profile embedded into the file, you can initalize it later, something like this:
Code:objBitmap.Data.ColorManagement.DataProfile = "C:\WINDOWS\system32\spool\drivers\color\sRGB Color Space Profile.icm"
Output profile you should provide yourself. In your case it will be a profile of your printer (it is usually shipped with printer drivers and other enclosed software).
For output profile Graphics Mill provides three properties:
- RgbProfile
- CmykProfile
- GrayscaleProfile
Each property specifies output profile for each color space supported with Graphics Mill. You may compare it with analogue settings in Photoshop.
Printer color profiles are usually designed for CMYK color space. That's why you should assign a name of the ICC profile file to CmykProfile property:
Code:objBitmap.Data.ColorManagement.CmykProfile = "C:\WINDOWS\system32\spool\drivers\color\yourprinter.icm"
Now color management module is initialized and you are ready to start conversion.
Code:objBitmap.Data.ConvertToCmyk
Now bitmap is converted to the very CMYK that will be handled with printer properly. Of course, exact match will be achieved only if you provide correct color profiles. Note, standard profiles may be too inaccurate. In this case you need to make a calibration for monitor and/or the printer. But it is beyound of Graphics Mill features and duties... :)
Well... I see the post is a bit longer than I expected. ;) I omitted some details as sRGB color space, or TargetProfile property, but I hope it will be enough to help you. If not, or if something is unclear, please feel free to ask again.
Edited by user Monday, December 24, 2007 5:00:44 PM(UTC)
| Reason: Not specified