Nodes/Orion4D Pixel-Shift Nodes for ComfyUI/Save Image Advanced (16b/32f)
ComfyUI Node

Save Image Advanced (16b/32f)

Your PNG is lying to you — save a real 32-bit float master instead

By orion4d·Created 12 months ago·Updated 12 months ago· 7
Save Image Advanced (16b/32f)
  • images
  • paths
filename_prefixComfyUI
subfolderAdvancedOutput
formatPNG
compression6
force_opaque_alphatrue
drop_alpha_on_cv2true

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) vs TIFF_32F/EXR (32-bit float, HDR preserved). The README's call: use EXR for VFX and grading compatibility.
  • filename_prefix / subfolder - where and under what name it saves. Default subfolder is AdvancedOutput.
  • 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.

CategoryImage/IO/Orion4D

Inputs (7)

NameTypeDefaultDescription
imagesIMAGE
filename_prefixSTRINGComfyUI
subfolderSTRINGAdvancedOutput
formatCOMBOPNG4 options: PNG, TIFF, TIFF_32F, EXR
compressionINT60–9Niveau de compression pour PNG
force_opaque_alphaBOOLEANtruePour les formats non-float, force l'alpha à 100% pour éviter les aperçus noirs
drop_alpha_on_cv2BOOLEANtrueSi OpenCV est utilisé en fallback, supprime l'alpha (recommandé)

Outputs (1)

NameTypeDescription
pathsSTRING