Nodes/honda-nodes/πŸ–Ό Load Image
ComfyUI Node

πŸ–Ό Load Image

The loader that hands you the metadata as JSON

By AvarayΒ·Created 14 days agoΒ·Updated 12 days agoΒ· 0
πŸ–Ό Load Image
    • Image
    • Metadata
    • Path
    • Format
    β—„image_fileβ–Ί
    β—„path_overrideβ–Ί

    ComfyUI's core Load Image gives you pixels and that's about it. Fine until you want to read the file rather than re-render it: pull the prompt out of an old PNG, check which checkpoint made it, rename it after its own seed. Honda's version is the core loader with an ime metadata dump bolted on, so you get the picture and the JSON that was travelling inside it, in one node.

    How it works

    There are two paths through it, and they behave differently enough to be worth knowing.

    The normal path - you pick a file that lives in ComfyUI's input/ folder - delegates to core LoadImage().load_image(), so you inherit exactly the same decoding behaviour as the built-in node, including support for the annotated-filepath syntax. Then it resolves the format by reading the file's magic bytes (png, jpg, webp, or unknown - the same check a file browser would do, not the extension) and shells out to the ime binary to dump the image's metadata as JSON text.

    The override path - an absolute path wired into Path Override - does its own decode: PIL open, EXIF orientation applied, RGB, scaled to a 0–1 tensor. Two side effects. Alpha is discarded, because convert("RGB") means what it says. And the external file gets copied into input/ so the frontend can show a preview through /view - copy2, only if a file with that basename doesn't already exist. So if you previously pulled a different image under the same filename, the node reads the file you asked for and previews the stale one. Delete the duplicate in input/.

    The inputs and outputs that matter

    File Name is the ordinary picker - a socketless text field, so it's a dropdown next to a text box, and the value is a name resolved inside input/. Path Override is the optional escape hatch, and it's a forced input: you have to wire a STRING into it (Path Join output, a Read File, a Text node), you can't type into it. If it's non-empty it wins outright and File Name is ignored.

    Four outputs, and this is the part that earns the node its slot:

    • Image - the tensor, straight into your sampler/img2img chain.
    • Metadata - a JSON string from ime. Valid JSON, or an empty string if extraction failed.
    • Path - the resolved absolute path of the file that was actually read.
    • Format - png, jpg, webp or unknown.

    Metadata is the interesting one. Feed it to JSON Preview to see what's in the file, JSON Get Value or JSON Set Key to pull a field out, and JSON Merge to amend it before writing. Path is what you feed to the file-system nodes when you want to move or rename the source after processing - Path β†’ Rename File, for instance.

    One thing that is not here, and people notice: there is no MASK output. Core Load Image emits a mask derived from the alpha channel; this node calls the same decoder but throws the mask away. If your workflow does alpha-masked compositing, you need the core loader in parallel, or a separate mask-extraction node.

    If the file can't be found, the node doesn't throw - it returns with block_execution and a message telling you to pick an image or fix the path, so the run stops cleanly instead of executing half a graph against a None tensor.

    How to install it

    Part of Avaray/honda-nodes. ComfyUI Manager β†’ Node Pack β†’ search Honda Nodes β†’ Install β†’ restart. Manually:

    cd ComfyUI/custom_nodes
    git clone --depth 1 https://github.com/Avaray/honda-nodes.git
    cd honda-nodes
    python install.py
    

    For this node the installer isn't optional: it downloads the ime binary (the author's own image-metadata-editor, from its GitHub releases) into the pack's bin/ folder, and that's what produces the Metadata output. It pulls jq too, for the JSON nodes. No pip deps, no models.

    Common issues

    Metadata comes out as an empty string. The ime binary is missing or failed - look for Warning: 'ime' CLI not found. Skipping metadata extraction. in the console, that's the exact message. Re-run install.py; on a locked-down machine check whether the GitHub release download is blocked. A file with genuinely no metadata also yields an empty string, so test on a known ComfyUI PNG first.

    "Please select an image or provide a path_override". File Name is blank, or the widget is pointing at a file that got deleted from input/ since the workflow was saved. Re-pick it.

    The preview doesn't match the image the graph is using. The input/ copy collision described above. Delete the stale file from input/.

    Your metadata says the file is a workflow chunk, but it's a prompt and not a workflow. That's the file, not the node: images saved through an API or a hosted front end only carry the flattened prompt chunk, so there's no editable graph inside.

    Category⚑️ Honda Nodes/πŸ–Ό Image

    Inputs (2)

    NameTypeDefaultDescription
    image_fileSTRINGName of the image file in the input directory.
    path_overrideoptSTRINGAbsolute path to an image file. If provided, this overrides the selected image.

    Outputs (4)

    NameTypeDescription
    ImageIMAGEβ€”
    MetadataSTRINGβ€”
    PathSTRINGβ€”
    FormatSTRINGβ€”