Easy Save Image
PNG/JPG/WebP, subfolders, and it won't overwrite a thing
- images
- exif_metadata
The stock SaveImage node writes a PNG, names it ComfyUI_00001_.png, and embeds your graph. That's fine until you want a JPEG for a client, a subfolder per project, a flat A1111 parameters block for Civitai's auto-linker, or a same-name .json next to the image. Easy Save Image is the writer that does all of that, and it pairs with Easy Image Metadata for the metadata half.
It replaces ComfyUI-Image-Saver-style nodes for most people: same idea, no extra pack, no model downloads.
How it works
You give it images and it writes them into ComfyUI's output/ directory, or into a subfolder you name in path - which is confined to the output directory on purpose. Try to climb out with ../ and the pack refuses rather than scattering files across your drive.
filename is the name without extension, defaulting to Easy. One image and no collision gives you exactly Easy.png. A batch, or a name that's already taken, gets numbered: Easy_01.png, Easy_02.png. Before it writes anything it scans the target folder for both the images and any .json sidecars, then allocates the next free number. Existing files are never clobbered - which sounds obvious until you've lost an afternoon of good generations to a re-run.
extension picks png, jpg, jpeg or webp. quality (1–100, default 95) applies to JPEG and WebP only - PNG is always lossless. lossless_webp flips WebP to lossless, and optimize_png spends more CPU to shave bytes off the PNG. JPEG output gets converted to RGB, so your alpha channel is flattened rather than saved as a JPEG-that-isn't.
The two workflow switches are independent of the metadata socket. embed_workflow defaults on and writes the save's own prompt and workflow chunks - that's the thing that lets you drag the PNG back onto the canvas and get your graph. save_workflow_as_json defaults off and writes a same-stem .json beside the image instead.
There are no outputs: it's an output node, so it always runs and shows the result as a preview in the node itself.
Wiring the metadata
Drop in Easy Image Metadata, connect the same final images to both nodes, then connect its exif_metadata output to the saver's exif_metadata input. That input only accepts that one type on purpose - wire anything else in and you get [EasyUseAnima] Connect Easy Image Metadata to exif_metadata. rather than a mystery failure.
The metadata lands in a PNG text chunk for PNG, and in EXIF UserComment for JPEG and WebP. That matters more than it sounds: only PNG keeps the drag-it-back-into-ComfyUI workflow plus the A1111 parameters. JPEG and WebP re-encode by definition, so treat them as derivatives to publish, never as your archive copy. If you want pixels and nothing else, disconnect the metadata node and turn both workflow switches off - the saver then skips metadata and resource hashing entirely.
Installing it
Manager → search EasyUse Anima, or:
cd ComfyUI/custom_nodes
git clone https://github.com/n0va39/ComfyUI-EasyUseAnima
pip install -r ComfyUI-EasyUseAnima/requirements.txt
Restart ComfyUI after. This node needs neither the README's optional node packs nor any model files - it uses Pillow, which ComfyUI already ships. Works with any diffusion model, Anima or otherwise.
Where people get burned
--disable-metadatakills everything. Start ComfyUI with that flag (or the server setting) and you get pixels only - no A1111 parameters, no workflow, no sidecar. If metadata "isn't being written", check the launch arguments before you rebuild the graph.- JPEG has an EXIF size ceiling. A workflow that doesn't fit falls back to a
.jsonsidecar next to the image. That file is your only copy of the graph - load that JSON to restore it, not the JPEG. - Filename rules are strict. No slashes or backslashes in
filename, and the result has to be a valid Windows filename component, because the pack sanitizes for portability.pathis for folders. - This is
output/, nottemp/. UnlikePreviewImage, everything it writes is meant to be kept. While you're iterating, keep a preview node at the end and swap in this saver when you actually like the result - otherwise you'll pile up thousands of keepers inoutput/.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| path | STRING | Optional subfolder under ComfyUI's output directory. | |
| filename | STRING | Easy | Filename without extension. Existing files receive a numbered suffix. |
| extension | COMBO | 4 options: png, jpg, jpeg, webp | |
| quality | INT | 951–100 | JPEG/WebP quality. PNG is always lossless. |
| lossless_webp | BOOLEAN | false | — |
| optimize_png | BOOLEAN | false | Use slower PNG compression to reduce file size. |
| embed_workflow | BOOLEAN | true | — |
| save_workflow_as_json | BOOLEAN | false | — |
| exif_metadataopt | EASYUSE_IMAGE_METADATA | Optional A1111 metadata from Easy Image Metadata. Workflow options are independent. |
Outputs (0)
No outputs