LittleCMS Color Profile Converter
Real ICC profile conversion, rendering intents included
- image
- converted_image
- conversion_info
- profile_info
This is the pack's heavyweight: actual ICC-profile-to-ICC-profile conversion using LittleCMS (via Pillow's ImageCms), with rendering intents and black point compensation - the vocabulary color-managed print and photo workflows are built on. Where ColorConverterAdvanced does matrix math between a handful of named spaces, this node converts through real ICC profiles, including your own custom ones. If you care about what a color actually is when it leaves your pipeline - not just what it looks like on your monitor - this is the node.
How it works
It builds a LittleCMS transform between a source and target profile and applies it to the image. The profile list covers the standards you'll actually meet - sRGB, Adobe RGB, ProPhoto RGB, Rec. 709, Rec. 2020, Linear sRGB, and custom for profiles you supply. source_profile defaults to auto_detect, which reads the embedded ICC profile from the file when input_mode is file - the nicest touch in the node, because it means "just tell me what space this file is in" instead of guessing. The rendering intent dropdown gives you the classic four: Perceptual, Relative Colorimetric (the default), Saturation, and Absolute Colorimetric. Black point compensation defaults on, which is the right default for most real-world conversions.
Where a standard profile isn't available, the node falls back to matrix-based transforms (with gamma-aware encode/decode per profile), so conversions between sRGB/Adobe/ProPhoto/linear still work even without perfect profile data. And custom_source_profile / custom_target_profile accept your own ICC data, which is what makes this genuinely useful for print work - drop in the printer's profile, convert, export.
The inputs that matter
- source_profile / target_profile - pick from the seven;
auto_detect+sRGBis the classic "rescue a mis-tagged file" combination. - rendering_intent - Relative Colorimetric for "keep the in-gamut colors exact, clip the rest" (the print standard); Perceptual if you want the whole image compressed to fit the target gamut smoothly.
- black_point_compensation - leave on; turning it off darkens shadows on most conversions.
Outputs: converted_image, conversion_info (what transform ran, with which intent), and profile_info - details about the profiles involved, handy for logging which space a file actually landed in.
Install
Same pack, same install:
cd ComfyUI/custom_nodes
git clone https://github.com/APZmedia/ComfyUI-color-tools
Or ComfyUI Manager → search "ComfyUI Color Profile Reader" → restart after. The README's manual clone command has a placeholder URL (yourusername/... - use APZmedia/ComfyUI-color-tools). Dependencies are Pillow (for ImageCms/littleCMS) and numpy, plus OpenCV for file-mode loading - all covered by the pack's startup install.py, which can make the first launch slow for a couple minutes.
A last honest note: real ICC conversion is a corner of ComfyUI almost nobody visits - the subreddits barely mention ICC profiles, and the only serious neighbor in this space is the Darkroom pack (LittleCMS CMYK/print work). That scarcity is why this node matters if you need it: it's one of the few places in ComfyUI where profile-accurate color conversion exists at all. For print, for archival work, for "this blue must be the same blue on paper" - this is the node.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| input_mode | COMBO | tensor | 2 options: file, tensor |
| source_profile | COMBO | auto_detect | 7 options: auto_detect, sRGB, Adobe RGB, ProPhoto RGB, Rec. 709, Rec. 2020, +1 |
| target_profile | COMBO | sRGB | 7 options: sRGB, Adobe RGB, ProPhoto RGB, Rec. 709, Rec. 2020, Linear sRGB, +1 |
| rendering_intent | COMBO | Relative Colorimetric | 4 options: Perceptual, Relative Colorimetric, Saturation, Absolute Colorimetric |
| black_point_compensation | BOOLEAN | true | — |
| imageopt | IMAGE | — | |
| image_pathopt | STRING | — | |
| custom_source_profileopt | STRING | — | |
| custom_target_profileopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| converted_image | IMAGE | — |
| conversion_info | STRING | — |
| profile_info | STRING | — |