Bubba Save Image
Bubba Save Image
- pipe
- images
- metadata
- pipe
- metadata
- saved_paths
- info
Bubba Save Image is the pack's take on ComfyUI's SaveImage, and the difference is metadata. Where the stock node embeds the ComfyUI workflow and stops, this one also embeds the pack's own BUBBA_METADATA - model name, seed, steps, CFG, sampler, scheduler, prompts, the LoRA list, sample time - and can optionally add an A1111/Civitai-compatible parameters block on top. That combination is the whole reason to swap it in: you save a PNG and the file itself becomes a complete, portable record of the run.
The KB's image-io-metadata essay explains why this matters. A ComfyUI-generated PNG carries the graph as PNG text chunks - the image is the project file. And there's a specific, practical itch this node scratches: CivitAI's uploader auto-detects the A1111-style flat parameters string to link your model and LoRAs, which the stock ComfyUI node doesn't write. If you post to CivitAI, save_a1111_metadata is the toggle that makes auto-linking work. That's the thing the community swaps save nodes for, and it's built in here.
How it works
Give it images (or a pipe carrying them) and it writes PNGs to ComfyUI/output/, using save_prefix as a relative folder/name prefix - subfolders with slashes work, so characters/alice writes into output/characters/alice_00001_.png. If the prefix is empty it falls back to the save_prefix carried in pipe metadata, then to the pack's default of Character/Scene. Three toggles control what's embedded: save_workflow_metadata (ComfyUI prompt+workflow, on by default), save_a1111_metadata (the flat CivitAI-friendly parameters block, off by default), and preview_only - which flips saving to the temp folder like a PreviewImage, so you can iterate without piling files into output/. It's an output node in the graph-execution sense (it always runs and the cache works backward from it), so it belongs at the end of a workflow.
The outputs that matter
saved_paths- the actual paths written, one per image. Wire this to a display node if you want to see where things landed.info- a text summary including a frontend warning when the connected metadata is empty/default or a PNG metadata embed failed for one or more files.pipe/metadata- pass-through for downstream Bubba nodes.
How to install it
Standard Bubba_Nodes install: ComfyUI Manager → "Bubba Nodes" → install → restart, or
cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/bubba_nodes.git
restart, then pip install -r requirements.txt if needed (aiohttp, pydantic). Needs ComfyUI v0.27.0+ for the V3 API.
Gotchas
The metadata-warning frontend flag is worth respecting - if it tells you the connected Bubba metadata is empty, you're saving PNGs without the provenance record, which is the point of this node. And remember the round-trip limit from the KB: the embedded chunks survive only in the PNG. Re-encode to JPEG, screenshot it, or post it to a host that recompresses (Reddit) and the workflow is gone. Keep the original PNG as your master. One more thing to know: the pack's sister node, Bubba Load Image (With Metadata), reads the bubba_metadata chunk back out of these files and reconstructs a pipe - so the save/load pair is your persistence story across sessions. And note the pack is young with no real community signal yet; the README's metadata notes are the current source of truth on exactly which fields ride along.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| save_prefix | STRING | — | |
| preview_only | BOOLEAN | false | — |
| save_workflow_metadata | BOOLEAN | true | — |
| save_a1111_metadata | BOOLEAN | false | — |
| pipeopt | BUBBA_PIPE | — | |
| imagesopt | IMAGE | — | |
| metadataopt | BUBBA_METADATA | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| pipe | BUBBA_PIPE | — |
| metadata | BUBBA_METADATA | — |
| saved_paths | STRING | — |
| info | STRING | — |