Nodes/ComfyUI-MiniMax-H3-Studio/H3 Studio · Save Restorable PNG
ComfyUI Node

H3 Studio · Save Restorable PNG

The H3 Studio PNG that reloads the whole project, not just the pixels

By thaakeno·Created 17 days ago·Updated 5 days ago· 79
H3 Studio · Save Restorable PNG
  • images
  • studio_context
  • images
filename_prefixComfyUI

In ComfyUI, a saved PNG is never just a picture - the whole workflow that made it is embedded in the file's text chunks, which is why dragging an image back onto the canvas rebuilds the graph. H3StudioSaveImage (H3 Studio · Save Restorable PNG) is that same trick, taken seriously. H3 Studio is a stateful project: the Director holds references, their roles, the sampling profile, the seed, the resolved route. A stock SaveImage would write a graph that can't reproduce any of it. This node saves the pixels and the completed project state, so the PNG you keep is the source code for the image, plus the settings that produced it.

What it actually is

It's a thin subclass of ComfyUI's own SaveImage - same PNG writing, same output directory, same filename templating - with one extra required input: studio_context, which you wire straight out of the H3 Studio Director. Give it that, and on every save it snapshots the Director's full state and embeds it three ways: the standard workflow chunk gets the Director's state and seed written back into the saved graph, the API prompt gets the same, and a dedicated h3studio metadata block carries a schema version, the compiled prompt, the resolved mode and route, canvas size, seed, sampling profile and the reference storage list. Drag that file back into ComfyUI later and you get the project as it actually ran - not a faded memory of it.

The inputs that matter

Only three, and it's an output node, so there's no result to wire onward except a passthrough:

  • images - what to save, usually the final still from your decode/selector.
  • filename_prefix - defaults to ComfyUI, giving you ComfyUI_00001_.png in ComfyUI/output/. It's a template, not just a name: %date:yyyy-MM-dd% and %SomeNode.widget% tokens work, and a slash makes a subfolder (portraits/run_a).
  • studio_context - the one that makes this node different. Forget it and the node refuses with "Connect H3 Studio Director's studio_context output to the final save node," which is the correct, helpful failure.

The images output just passes your images through, so you can chain another save or preview after it if you're that kind of workflow builder.

Install

It ships in the H3 Studio pack - ComfyUI Manager (search ComfyUI-MiniMax-H3-Studio) or:

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/thaakeno/ComfyUI-MiniMax-H3-Studio.git
cd ComfyUI-MiniMax-H3-Studio
python -m pip install -r requirements.txt

Then restart ComfyUI and hard-refresh the frontend. No extra models are required for saving - you already needed the full H3 stack to make the image in the first place.

Where people get burned

The metadata only survives if the bytes survive. Post the PNG to Reddit, Discord inline, or any host that re-encodes, and the project state is gone - that's true of every ComfyUI PNG, and it's doubly painful here because the state is the deliverable. Keep the original from output/ as your master and treat everything you upload as a lossy copy.

Two more things worth knowing. This pack counts successful saves through a small telemetry counter (a fixed /generated hit with session tracking off - never prompts, images or seeds); set H3STUDIO_TELEMETRY=0 if you'd rather not participate. And it's a fresh, alpha pack on the classic ComfyUI frontend only - Nodes 2.0 isn't supported yet, so don't expect the save to work there until the maintainer ships it.

CategoryH3 Studio

Inputs (3)

NameTypeDefaultDescription
imagesIMAGEThe images to save.
filename_prefixSTRINGComfyUIThe prefix for the file to save. This may include formatting information such as %date:yyyy-MM-dd% or %Empty Latent Image.width% to include values from nodes.
studio_contextH3_STUDIO_CONTEXT

Outputs (1)

NameTypeDescription
imagesIMAGE