ImageEn, unit iexBitmaps




property InputICCProfile: TIEICC;


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.IsApplied
InputICCProfile 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.

 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.SaveToFile( 'D:\Test_SRGB.jpg' );

if ierICC in ImageEnView1.IO.Params.ContainsInfo() then
  ShowMessage( 'ICC Profile: ' + ImageEnView1.IO.Params.InputICCProfile.InputColorSpace )
  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.Params.InputICCProfile.ConvertBitmap( ImageEnView1.IEBitmap, ie24RGB, ImageEnView1.IO.Params.OutputICCProfile );

See Also

 Color Management System