Optimizing Profiles

Once a color profile has been loaded, a CMM may be able to optimize it. Using the KcsOptimizeProfile()function, your application can optimize a profile (an individual profile or a CCP) in two ways:

First, your application can optimize a profile to make it more accurate (by eliminating intermediate round-off errors, for instance), smaller (by merging sequences of look-up tables, for instance), or faster (by precomputing some results). The application specifies whether size, speed, accuracy, or some combination is more important.

Second, by using load hints to limit a profile's operations, your application also may affect its optimization. This is valuable, for instance, if you want to write color data with a DCP that will be used later to read the data. The size of the DCP can be significantly reduced (depending on the CMM in use) by restricting the profile to the forward operation only.

Because optimization can take a long time, your application can provide a callback similar to the one used with KcsEvaluate().

After your application optimizes a profile, it must call KcsSaveProfile() to save the profile for future use. Then it can use this profile with KcsLoadProfile() to avoid the slow performance of KcsOptimizeProfile().

Saving an optimized profile has some potential implications. The optimization may indirectly affect future operations on the profile. For example, if the profile is optimized for size, portions of the profile needed only for highest accuracy may be discarded, resulting in compromised accuracy.