Load Image With Workflow Ovum
Load an image and get its workflow back — metadata round-tripping made easy
- IMAGE
- MASK
- FILEPATH
- PROMPT&WORKFLOW
- IMAGE_EX
Load Image With Workflow is the core LoadImage node with a memory. It pulls an image from your input folder just like the built-in one, but it also hands you the filepath and whatever prompt/workflow metadata is embedded inside that PNG. If you've ever dragged someone's image into ComfyUI to grab the workflow out of it, this is that idea, exposed as a node you can wire into a graph instead of a manual step.
This matters more than it sounds. "Workflow included" is basically community law in ComfyUI - output PNGs carry the graph that made them, and round-tripping that provenance is genuinely useful when you want to feed a previous prompt back into a text encoder, log what a batch was generated with, or route a file on to a metadata tool. sfinktah even ships the parsing library for this in the pack's metadata/ folder, and it's been referenced in the wild for pulling workflows out of video files too.
How it works
Under the hood it subclasses ComfyUI's own LoadImage, so the image loading path is identical - same file dropdown, same EXIF transpose, same handling of multi-frame files. What's added is a metadata extraction pass: after the image decodes, it runs MetadataFileExtractor.extract_both() on the file and packs the results into an IMAGE_EX dict. It also reports loaded_path and loaded_basename back to the UI, so you can see exactly which file resolved.
The inputs and outputs that matter
The only input is image, a dropdown of files in your input folder - same as core Load Image, upload supported. The outputs are the whole point:
- IMAGE / MASK - the decoded image and alpha mask, exactly what Load Image gives you.
- FILEPATH - the resolved absolute path as a string (forward slashes).
- PROMPT&WORKFLOW - the embedded metadata as a dict,
{"prompt": {...}, "workflow": {...}}. - IMAGE_EX - one dict bundling image, mask, filepath, prompt, and workflow. There's a matching family of
IMAGE_EX Contextnodes in this pack that consume it, letting you override individual fields without rewiring everything.
Installing it
It ships in the comfy-ovum pack. Easiest is ComfyUI Manager - search for "comfy-ovum" and hit install, then restart. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum
# restart ComfyUI
No model downloads here. The pack's requirements.txt is light - pillow and numpy (already in ComfyUI), plus pymediainfo, requests, braceexpand, markdown-it-py, aiohttp, tomli-w. Manager handles those; if you cloned manually, run pip install -r requirements.txt inside the folder.
Common issues
The one that trips people up: images saved without embedded metadata (say, exported from a viewer or re-saved) come back with empty {"prompt": {}, "workflow": {}} - that's expected behavior, not a bug. Your downstream node should tolerate empty dicts. Also note multi-frame files: MPO is excluded from batching, and mismatched-size frames get skipped. And if you're looking for the "load from output folder" variant, that exists too - LoadImageFromOutputWithWorkflowOvum - for pulling files back out of your render folder.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image | COMBO | 1 options: example.png |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |
| FILEPATH | STRING | — |
| PROMPT&WORKFLOW | DICT | — |
| IMAGE_EX | DICT | — |