Declaration
property InputICCProfile: TIEICC;
Description
Provides access to the ICC profile associated with the current image. It is also saved with the image if it hasn't been applied.
If
EnableCMS is True and ImageEn has a CMS, the
InputICCProfile and
OutputICCProfile are applied when you load the image.
Note: Once an Input ICC is applied, it is removed from the image.
Understanding ICC Profiles
There are three properties related to ICC Profiles in ImageEn:
InputICCProfile: This is the profile contained in the image file (that was provided by the image source, e.g. a digital camera, or scanner).
If EnableCMS=true, then the input profile is automatically used to convert to the output profile and then discarded (so it is not reapplied to the pixels when reloaded). To determine if an input profile has been applied, use:
IOParams.InputICCProfile.IsAppliedInputICCProfile is saved with the image, if it has not been applied.
DefaultICCProfile: Used as the input ICC profile if there is not one contained in the file (i.e. to specify a default color profile to apply to the image). It is not saved to the image.
OutputICCProfile: Defines the color profile for our usage of the image (e.g. monitor, printer, etc.). Defaults to sRGB. After loading an image, a transformation from InputICCProfile (color profile from source camera, scanner, etc.) to OutputICCProfile (profile for monitor, a printer, etc.) is performed
To save a color profile (which will be its "input" profile) just ensure that
InputICCProfile or
DefaultICCProfile contain a valid profile.
Note:
◼InputICCProfile is supported by JPEG, TIFF and PSD
◼If
EnableCMS = True, the input profile will be discarded after loading
◼ImageEn uses an sRGB profile by default, so you need need not do anything to include an sRGB profile when printing or saving
◼If you are saving an image to a different format and want to maintain the ICC profile, ensure that the output color space matches the ICC format. For example, if a TIFF image contains a CMYK ICC profile, and you are saving to JPEG, you would need to change the
JPEG_ColorSpace to ioJPEG_CMYK. The default color space (ioJPEG_YCBCR) would disable the ICC profile.
◼ICC profiles can be read from JPEG, TIFF, PNG and PSD files
// Save a JPEG with the ICC profile, sRGB2014.icc
ImageEnView1.IO.LoadFromFile( 'D:\201849018_A1.jpg' );
ImageEnView1.IO.params.InputICCProfile.LoadFromFile('D:\sRGB2014.icc');
ImageEnView1.IO.SaveToFile( 'D:\Test_SRGB.jpg' );
if ierICC in ImageEnView1.IO.Params.ContainsInfo() then
ShowMessage( 'ICC Profile: ' + ImageEnView1.IO.Params.InputICCProfile.InputColorSpace )
else
ShowMessage('ICC Profile: None');
// Apply InputICCProfile (AdobeRGB1998.icc) color profile to an image and output as OutputICCProfile (Defaults to sRGB)
// Note: This permanently changes the colors of the image
ImageEnView1.IO.LoadFromFile('C:\out.ppm');
ImageEnView1.IO.Params.InputICCProfile.LoadFromFile('C:\AdobeRGB1998.icc');
ImageEnView1.IO.Params.InputICCProfile.ConvertBitmap( ImageEnView1.IEBitmap, ie24RGB, ImageEnView1.IO.Params.OutputICCProfile );
See Also
◼DefaultICCProfile◼OutputICCProfile◼EnableCMS◼Color Management System◼ColorProfile