ComfyNodesToSaveCanvas
Push ComfyUI output into the canvas tool
- image
- IMAGE
ComfyNodesToSaveCanvas is the inverse of ImageOutputToComfyNodes: it takes a ComfyUI IMAGE tensor and converts it back into a list of PIL images - the format the pack's canvas save system expects. One input (image), one output. If you're using the pack's canvas/outpaint tooling, this is the node that hands your generated result to the canvas side so it can be saved or composited there.
What it does under the hood
The source does the reverse conversion: take the first frame, multiply by 255 (back into 0–255), convert to uint8, and build a PIL image from it. The output type is technically labeled IMAGE, but what comes out is a Python list of PIL images - which is exactly what the pack's canvas save path (SaveImage_Canvas) expects to receive. So the "IMAGE" label is doing some heavy lifting here; the real contract is "this output speaks PIL to the canvas tools."
When you need it
In the canvas workflow, images flow like this: canvas side produces an image → ImageOutputToComfyNodes normalizes it into ComfyUI land → you run generation/inpainting on it → ComfyNodesToSaveCanvas converts the result back → the canvas tool saves or stitches it. Without this bridge, the canvas save nodes receive a tensor they can't work with and things fail in confusing ways. It's not a node you reach for outside this specific pipeline - it's the "out" half of the canvas format bridge.
Setup
Part of taabata/LCM_Inpaint-Outpaint_Comfy:
cd ComfyUI/custom_nodes
git clone https://github.com/taabata/LCM_Inpaint-Outpaint_Comfy
cd LCM_Inpaint-Outpaint_Comfy
pip install -r requirements.txt
Or ComfyUI Manager, search LCM_Inpaint-Outpaint_Comfy. No models needed. If you're planning to use the canvas tooling at all, remember the one-off setup step from the README - from inside ComfyUI/custom_nodes/LCM_Inpaint_Outpaint_Comfy/CanvasTool, run python setup.py to copy the canvas server files into place.
Honest take
Like its sibling, this is a plumbing node with a very narrow audience: people running the pack's canvas workflows. If you never touch the canvas tool, you'll never see it. If you do, remember the data-format contract - ComfyUI's 0–1 float tensor on the way in, PIL 0–255 on the way out - and it'll behave exactly as expected.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |