LoadImageFromOutputDirectoryNode
Reload a file from your output folder — with a weird but useful catch
- image
- image
LoadImageFromOutputDirectoryNode is the reading half of a feedback loop. Stock ComfyUI can load an image from input/ with a dropdown you have to refresh manually; this node instead loads a file from ComfyUI's output directory by exact filename, every single time it runs, reading whatever is currently on disk. Change the file, re-run the graph, and you get the new pixels. No manual refresh, no reselecting.
That makes it the natural partner for the pack's Save & Overwrite Image node: Save writes image.png (clobbering the old one), this node reads image.png back, and you've got a clean image-in → image-out loop for iterative refinement, style sweeps, or any workflow that wants to look at its own last result.
The weird part you need to know about
The node requires an image (IMAGE) input that it completely ignores. It's in the schema, you have to wire something into it, and then the node reads the file from disk and ignores the tensor you handed it. That's not a bug you need to fix - it's a deliberate (if opaque) design choice: the image input exists to force ordering. ComfyUI won't run this node until the thing upstream of it has finished, which guarantees the file on disk is fresh before it's loaded. It's a trigger socket wearing a data socket's clothes.
So don't be confused when you connect your save output to it and get back the file contents rather than what you sent in. That's the whole point.
Inputs and outputs
image(IMAGE) - required, unused. Wire in whatever must finish before the reload (usually your Save node's output). It's the trigger.filename(STRING, default"image.png") - the file to load, relative to ComfyUI's output directory. No subfolders, just a name.- Output
image(IMAGE) - the file, decoded back to a tensor, ready to feed the next stage.
The gotchas
- The file must exist when the node runs. This node doesn't create anything; if
filenameisn't in the output folder, it throws. If you're building the loop, make sure the save runs first (which the dummy image input is doing for you). - The unused input is a trap for beginners. You'll probably try to disconnect it at some point; you can't. It's required. Just leave it wired to whatever runs before the load.
- Output directory only. This reads from
output/, notinput/or a custom path. Pair it with a save node that writes there (Save & Overwrite Image does) and you're aligned.
Install
It's part of ComfyUI-Pronodes, a small MIT utility pack:
- ComfyUI Manager: search "ComfyUI-Pronodes", install, restart.
- Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/yuvraj108c/ComfyUI-Pronodes
No extra dependencies for this node - just PIL, which ComfyUI already ships. The pack is honestly labeled "still in development" by its author, and this node shows the personality: minimal, purpose-built, and with one interface quirk (that phantom image input) that you'll either appreciate once you understand it or find mildly infuriating. For a deterministic reload-from-disk step, it does the job with zero moving parts.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| filename | STRING | image.png | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |