Little CMS wrapper for Rust
Convert and apply color profiles with a safe abstraction layer for the LCMS library.
See API reference for Rust functions and the LCMS2 documentation HTML/PDF for more background information about the functions.
use *;
To apply an ICC profile from a JPEG:
if b"ICC_PROFILE\0" == &app2_marker_data
There's more in the examples directory.
This crate requires Rust 1.33 or later. It's up to date with LCMS 2.9, and should work with 2.6 to 2.9.
Threads
In LCMS all functions are in 2 flavors: global and *THR() functions. In this crate this is represented by having functions with GlobalContext and ThreadContext. Create profiles, transforms, etc. using *_context() constructors to give them their private coontext, which makes them sendable between threads (i.e. they're Send).
By default Transform does not implement Sync, because LCMS2 has a thread-unsafe cache in the transform. You can set Flags::NO_CACHE to make it safe (this is checked at compile time).