SaveImage_PixelML
A renamed fork of ComfyUI's SaveImage with one extra required field
- images
SaveImage_PixelML is, plainly, a fork of ComfyUI's built-in SaveImage node with one extra required field bolted on. If you're comparing it to the core node, there is essentially no other difference: same output directory, same PNG writing, same embedded workflow metadata. So the honest question is whether that extra field - output_name - is worth anything to you.
Here's the field's story. The core SaveImage takes an images input and a filename_prefix, and that's it. This version adds a required output_name (default "output_input") that has no effect on the filename or the save location - it's a required label the node demands before it will run. If it's empty, the node raises ValueError: Output name is required. In the pack's wider "variable handling and workflow automation" framing, that label is presumably how an agentic pipeline tracks which save produced which output. For a human, it's a mandatory text field you mostly just leave alone.
How it works
The mechanics are copied from core ComfyUI's SaveImage. On run, it computes a save path in your ComfyUI output directory via get_save_image_path, converts each image in the batch from a torch tensor to a PIL image, and writes it as a PNG with compression level 4. It also embeds the workflow and prompt JSON as PNG text chunks - that's the metadata that lets you drag the saved image back into ComfyUI to reconstruct the graph. If you launch ComfyUI with --disable-metadata, that embedding is skipped.
The output file naming follows the standard pattern: your filename_prefix plus a zero-padded counter, e.g. ComfyUI_00001_.png. A batch of images becomes a sequence of numbered files.
The inputs
- images (IMAGE) - the batch of tensors to save. Wire this from a VAE Decode or any image-producing node.
- filename_prefix (STRING, default
"ComfyUI") - the base name of the saved files. - output_name (STRING, default
"output_input") - the required label. Must be non-empty or the node errors out. It doesn't affect the filename.
There are no outputs - it's an output node that terminates the branch of your graph.
Install
Via ComfyUI Manager: search "PixelML ComfyUI Nodes", install, restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/PixelML/ComfyUI-PixelML-CustomNodes
Then restart ComfyUI. The pack's requirements.txt pins diffusers==0.24.0 plus boto3/httpx/httpx-sse, none of which this node uses - it only needs PIL, numpy, and ComfyUI's folder_paths. If the requirements file causes a diffusers downgrade that breaks other nodes, skip it; the save node runs fine without it.
The honest verdict
If you're looking for a save node, use core SaveImage - it does the same thing with one less required field to trip over. Where this one earns its keep is in agent-driven workflows that need the output_name label to identify saves programmatically. The "Output name is required" error is the only failure mode you're likely to hit, and it's self-explanatory: fill the field. There's no model download, no heavy dependency, and nothing else to configure.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | ComfyUI | — |
| output_name | STRING | output_input | — |
Outputs (0)
No outputs