ComfyUI Node

Easy Save Image

PNG/JPG/WebP, subfolders, and it won't overwrite a thing

By n0va39·Created 3 months ago·Updated a day ago· 27
Easy Save Image
  • images
  • exif_metadata
    path
    filenameEasy
    extension
    quality95
    lossless_webpfalse
    optimize_pngfalse
    embed_workflowtrue
    save_workflow_as_jsonfalse

    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-metadata kills 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 .json sidecar 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. path is for folders.
    • This is output/, not temp/. Unlike PreviewImage, 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 in output/.
    CategoryEasyUse Anima/Image

    Inputs (10)

    NameTypeDefaultDescription
    imagesIMAGE
    pathSTRINGOptional subfolder under ComfyUI's output directory.
    filenameSTRINGEasyFilename without extension. Existing files receive a numbered suffix.
    extensionCOMBO4 options: png, jpg, jpeg, webp
    qualityINT951–100JPEG/WebP quality. PNG is always lossless.
    lossless_webpBOOLEANfalse
    optimize_pngBOOLEANfalseUse slower PNG compression to reduce file size.
    embed_workflowBOOLEANtrue
    save_workflow_as_jsonBOOLEANfalse
    exif_metadataoptEASYUSE_IMAGE_METADATAOptional A1111 metadata from Easy Image Metadata. Workflow options are independent.

    Outputs (0)

    No outputs