Save Image Advanced (16b/32f)
Your PNG is lying to you — save a real 32-bit float master instead
- images
- paths
ComfyUI's built-in Save Image clamps everything to 0–1 and writes a standard PNG. That's fine for sharing a render. It's wrong for finishing one - clamp a highlight that sat at 1.3 and the specular is gone before you ever opened your grading software. This node is the output half of Orion4D's "digital master" workflow: it can write 16-bit PNG/TIFF and, more usefully, true 32-bit float TIFF and OpenEXR where nothing gets thrown away.
It's the natural partner to the pack's Ensemble Super-Resolution node. Feed it the image_float output (the unclamped float32 master) and pick EXR, and what lands on disk is a file a colorist can actually pull highlights and shadows back out of - the "RAW file" equivalent the README keeps talking about.
How it works
The source picks a path by format. PNG and TIFF are integer formats: the float data gets clamped to 0–1 and quantized to 16-bit (0–65535), so blown-out HDR data is clipped - good for delivery, not for mastering. TIFF_32F and EXR keep the pixels as float32, unclamped, so values above 1.0 survive round-trip.
Files land in output/<subfolder>/<filename_prefix>_<timestamp>_<index>.<ext> inside your ComfyUI output dir. The save itself runs a backend chain - imageio first, then tifffile, then OpenCV, and finally an 8-bit PIL fallback so a missing library never silently eats your render. If that fallback triggers, it writes ..._8bit_fallback.png and prints the exact libraries to install.
The inputs that matter
images (wire image_float here) and format are the two that do the work. The rest:
format-PNG/TIFF(16-bit int, HDR clipped) vsTIFF_32F/EXR(32-bit float, HDR preserved). The README's call: useEXRfor VFX and grading compatibility.filename_prefix/subfolder- where and under what name it saves. Default subfolder isAdvancedOutput.compression(default 6) - PNG compression level, 0–9. It only affects PNG; TIFF uses its own LZW/deflate. 6 is a fine trade-off.force_opaque_alpha(default true) - for the non-float formats, forces alpha to 100% so you don't get black thumbnails in Windows. Leave it on.drop_alpha_on_cv2(default true) - OpenCV can't write 16-bit RGBA PNG, so this drops the alpha when cv2 is the fallback. Leave it on.
The output
paths, a single STRING with one full path per saved frame, newline-separated. Note the gotcha: it's one string, not a list, even if you save a batch - a downstream node expecting STRING[] will complain. Mostly it's for logging; the files themselves are the real output.
Install and troubleshooting
ComfyUI Manager (search "Orion4D Pixel-Shift") or:
cd ComfyUI/custom_nodes
git clone https://github.com/orion4d/Orion4D_pixelshift
The pack ships no requirements.txt, so you must install the save backends yourself or you'll be stuck on the 8-bit fallback:
pip install imageio tifffile opencv-python-headless
imageio handles 16-bit PNG/TIFF, tifffile handles TIFF_32F, opencv handles EXR. Restart ComfyUI after. If your "16-bit" PNG comes out as an _8bit_fallback file, you skipped this step - the console warning literally tells you the fix.
Two small things worth knowing. Black thumbnails in Windows Explorer are the force_opaque_alpha problem, not corruption. And EXR is written through OpenCV, which internally swaps RGB to BGR - that's the standard convention for that path, so it reads back correctly in OpenCV-based tools and most viewers. If you ever see swapped color channels in an EXR from this node, that's the one place to look.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | ComfyUI | — |
| subfolder | STRING | AdvancedOutput | — |
| format | COMBO | PNG | 4 options: PNG, TIFF, TIFF_32F, EXR |
| compression | INT | 60–9 | Niveau de compression pour PNG |
| force_opaque_alpha | BOOLEAN | true | Pour les formats non-float, force l'alpha à 100% pour éviter les aperçus noirs |
| drop_alpha_on_cv2 | BOOLEAN | true | Si OpenCV est utilisé en fallback, supprime l'alpha (recommandé) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| paths | STRING | — |