Save Image to Tif
The print shop wants CMYK TIFF, and you don't own Photoshop
- images
So you finally got the commission - a mural, a poster, a product box - and the printer's requirements email says "final files must be CMYK TIFF, 150 DPI, with an embedded ICC profile." Your image is a PNG sitting in ComfyUI/output and the next sentence is "no Photoshop, please." That's exactly the moment this node exists for. RGB2CMYK (displayed in your node list as Save Image to Tif) takes an IMAGE from your workflow, converts it to a real CMYK TIFF using proper ICC color management, and drops it in your output folder - no round-trip through an online converter that mangles your blacks.
This is a tiny, single-purpose output node from the comfyui-rgb2cmyk pack. It's one niche step in the last leg of a print pipeline: generate in ComfyUI, decode with a VAE, wire the result in here, and hand the TIFF to the printer. Zero AI in it, and that's the point - this is the boring-but-critical file-format plumbing that most generators simply don't ship.
How it works
Under the hood it's PIL.ImageCms (LittleCMS, the same engine Photoshop uses) doing a proper profile-to-profile transform with relative colorimetric rendering intent. The code's own comment calls out why it bothers: img.convert('CMYK') alone is a naive matrix conversion that loses information, while a real ICC transform maps your source RGB gamut onto the target CMYK gamut.
The node scans its color_profiles folder at runtime and builds the input dropdowns from whatever .icc files it finds there. It converts each image, saves it as a TIFF with LZW compression, and embeds the CMYK profile into the file - so the printer's software sees exactly which color space you intended. Batches are handled per-frame with %batch_num% in the filename, same as the stock Save Image node.
The inputs that matter
All three are required; only two are things you'll actually touch:
- images - wire this from your VAE Decode (or Load Image, if you're converting an existing PNG). Standard IMAGE tensor.
- rgb_icc_profile_name - the source profile. Default
AppleRGB.icc; the author tested it and found it gives the least color shift.AdobeRGB1998.iccis the other RGB profile in the dropdown. - cmyk_icc_profile_name - the destination. Default
CoatedFOGRA39.icc(the European ISO coated standard), withJapanColor2001Coated.iccandWebCoatedSWOP2006Grade5.iccfor the other major print regions. Ask your printer which one they run. - filename_prefix - same prefix/format-tag behavior as Save Image (
%date:yyyy-MM-dd%and friends work).
There are no outputs - this is a terminal save node. It writes ComfyUI_00001_.tif (or your prefix) into the standard output directory.
Installing it
Simplest path: ComfyUI Manager → install custom node → search "rgb2cmyk" or the pack title "RGB to CMYK for ComfyUI", then restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Jacky-MYQ/comfyui-rgb2cmyk
# restart ComfyUI
No requirements.txt, no pip step, no model downloads - it only uses Pillow, numpy, and ComfyUI's own folder_paths, all of which ship with ComfyUI already. Five ICC profiles are bundled in the pack's color_profiles folder, so it works out of the box.
Where people get burned
- Pick two different profiles. The code raises a hard
ValueErrorifrgb_icc_profile_name == cmyk_icc_profile_name. More subtly: both dropdowns list all five profiles, so it's easy to grabCoatedFOGRA39.iccfor both and brick it. RGB in the top slot, CMYK in the bottom. - Drop custom profiles in, but know where. ICC files must live inside the pack's
color_profilesfolder (they're auto-detected). If the dropdown only shows five entries, that's where the scanner looks. - DPI isn't set here. This node saves pixels, not a resolution tag - the mural job in the r/StableDiffusion thread needed 150 DPI, and you'll still set that in whatever editor opens the TIFF. Don't be the person who sends a 72-DPI blob and wonders why the print shop is annoyed.
It's a niche tool, but when you're one bad file away from a print deadline, it's the node you'd rather have than a browser tab full of ad-riddled converters.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | ComfyUI | The prefix for the file to save. This may include formatting information such as %date:yyyy-MM-dd% or %Empty Latent Image.width% to include values from nodes. |
| rgb_icc_profile_name | COMBO | AppleRGB.icc | The name of the RGB profile. |
| cmyk_icc_profile_name | COMBO | CoatedFOGRA39.icc | The name of the CMYK profile. |
Outputs (0)
No outputs