The IccProfLib is an open source cross platform C++ library for reading, writing, manipulating, and applying ICC profiles. It is an attempt at a strict interpretation of the ICC profile specification. The structure of the library very closely follows the structure of the specification. A working knowledge of the ICC specification and color management workflows will aid in understanding the library and it's proper usage. For the latest ICC profile specification please visit http://www.color.org. Several useful white papers and resources are also available on the website.
Here are some of the things that the IccProfLib supports:
- ICC profile file I/O in CIccProfile class
- Version 5.0 profiles (read & write)
- Version 4.3 profiles (read & write)
- Version 2.x profiles (read)
- C++ classes for all specified tag types (based on CIccTag). Default behavior for unrecognized private tag types is implemented using a generic Tag class.
- Two basic Color Management Module (CMM) implementations
- Basic pixel level transforms in CIccCmm class
- Additional named color profile support in CIccNamedColorCmm class
- File I/O can be re-directed
- All operations performed using floating point. Pixel precision not limited to integers.
- Transforms are done one pixel at a time.
- Flexible number of profile transforms in a series (as long as the colorspaces match)
- Multidimensional lookup table interpolation
- Three dimensional interpolation uses either linear or tetrahedral interpolation (selectable at time profile is attached to the CMM).
- Greater than three dimensional interpolation uses linear interpolation
- Matrix/TRC support
- Calculation of Profile ID using the MD5 fingerprinting method (see IccMD5.h)
- Dynamic creation and seemless use of private CIccTag derived objects that are implemented outside of IccProfLib (IE inside a private library or application that links with IccProfLib).
USAGE COMMENTS
- The IccProfLib implements very basic CMMs. These may not provide the optimum speed in all situations. Profile transforms are done one pixel at a time for each profile in a profile transformation chain. Various techniques can possibly be used to improve performance. An initial thought would be to create a CMM that uses the basic CIccCmm to generate a single link transform (concatenating the profiles). Such a transform could employ integer math if needed.
- The IccProfLib can be used to open, generate, manipulate (by adding, removing, or modifying tags), and/or save profiles without needing to use the pixel transformations provided by the CMM classes.
- Several applications have been written (in RefIccMAX) that make use of the IccProfLib. It is advisable to examine these applications for additional guidance in making the best use of the IccProfLib.
- Before compiling on non-Windows and non Mac OSX platforms it will be necessary to edit the configuration parameters in IccProfLibConf.h.
VERSION HISTORY
TODO List TBD
This software consists of voluntary contributions made by many individuals on behalf of the The International Color Consortium.
Membership in the ICC is encouraged when this software is used for commercial purposes.
CONTACT
Please send your questions, comments, and or suggestions to forums on the DemoIccMAX project site. (https://github.com/InternationalColorConsortium/DemoIccMAX).