💾 Save Image (OreX)
3 prefixes, a date folder, and a counter that makes sense
- images
- images
- saved_path
- filename_text
ComfyUI's built-in Save Image is fine until you're saving hundreds of images and every file is ComfyUI_00001_. Save Image (OreX) is the pack's answer: three stacked filename prefixes, an optional date-stamped folder, a processed/ subfolder toggle for batch loops, a counter that actually resumes where you left off, and a choice of png/jpg/webp. If you do any kind of bulk generation - batch processing, dataset prep, A/B testing - this node is worth installing the pack for on its own.
How it works
The filename is built from filename_prefix_1 + filename_prefix_2 + filename_prefix_3, joined by filename_separator, plus either a zero-padded counter or a time suffix. That's the whole "three prefixes" trick: you can stack a subject (portrait), a style (studio), and a variant (v2) without editing one long string. The use_counter toggle is interesting - on it uses an index counter, off it switches to a HHMMSS timestamp - and the counter isn't dumb: it scans the output folder on first run and starts at the highest existing number instead of colliding with your old files.
Two folder features are where it gets genuinely clever:
create_current_date_folder(on by default) saves into aYYYY-MM-DDsubfolder, which keeps a multi-day batch project organized without you lifting a finger.create_processed_folderis the batch-safety valve: outputs go into aprocessed/subfolder, so when your workflow is also reading from the same folder (via the pack's Load Image Batch), saved results don't get picked up and reprocessed in a loop. That's the classic "my batch keeps eating its own output" bug, solved with one checkbox.
The path itself comes from output_path - empty for the default output folder, relative resolves against it, absolute is used verbatim, and it supports %date:yyyy_MM_dd%-style variables in the string. And since it's an OreX node, there's an embed_workflow toggle so you can save PNGs without the embedded workflow JSON when you want a clean file.
Inputs and outputs
The essentials: active (master on/off), images, the three filename_prefix fields, filename_separator (default _), use_counter, and image_format with its matching jpg_quality / webp_quality. Outputs are images (pass-through) and saved_path - a STRING with the full path of the written file, which you can log or feed into Save Text.
Install
ComfyUI Manager (search "comfyui-OreX") or:
cd ComfyUI/custom_nodes
git clone https://github.com/orex2121/comfyui-OreX
Restart. No extra pip packages or models.
Where people get tripped up
The two gotchas are both path-related. On Windows, the node validates against the 260-character path limit and forbidden filename characters, and it will refuse a path that breaks either - which is correct but confusing if your prefixes run long. And remember create_current_date_folder is on by default, so files land in a dated subfolder, not the output root; if you're scripting something that greps the output folder, that's the first thing to check.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| active | BOOLEAN | true | — |
| output_path | STRING | — | |
| create_current_date_folder | BOOLEAN | true | — |
| create_processed_folder | BOOLEAN | false | — |
| images | IMAGE | — | |
| filename_prefix_1 | STRING | Image | — |
| filename_prefix_2 | STRING | — | |
| filename_prefix_3 | STRING | — | |
| filename_separator | STRING | _ | — |
| use_counter | BOOLEAN | true | — |
| embed_workflow | BOOLEAN | true | — |
| image_format | COMBO | png | 3 options: png, jpg, webp |
| jpg_quality | INT | 9050–100 | — |
| webp_quality | INT | 9050–100 | — |
| optimize_png | BOOLEAN | false | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| saved_path | STRING | — |
| filename_text | STRING | — |