Nodes/ApoStudio/ApoStudio Load Image
ComfyUI Node

ApoStudio Load Image

An image loader that also hands Chat the picture — and fixes your sideways phone photos

By ApoloniArt·Created 4 months ago·Updated 5 days ago· 5
ApoStudio Load Image
    • image
    • mask
    • width
    • height
    • filename
    image

    ComfyUI already ships a Load Image node, so why does ApoStudio bother? Because this one was built for the captioning use case: it loads an image the way you'd feed one to an LLM, and it hands you more than a tensor on the way out. Wire it into ApoStudio Chat's image input and you've got image captioning - an LLM reading your picture and describing it, which is the same job people use for LoRA captions and img2img prompt seeding.

    How it works. It reads from ComfyUI's standard input/ directory using the framework's own file handling, so you get the native dropdown plus the "choose file to upload" button - upload something and it lands in input/ automatically. Supported formats: jpg, jpeg, png, webp, bmp, tiff, and gif. The one genuinely useful extra over the core loader is EXIF orientation auto-correction (exif_transpose under the hood): a photo taken on a phone often stores its rotation in EXIF metadata rather than in the pixels, so without this fix your upright-looking image loads sideways. This node just fixes it.

    Inputs and outputs. One input: image (dropdown + upload button). The outputs:

    • image - the IMAGE tensor, ready for Chat's image socket (or anything else that eats an IMAGE)
    • mask - the alpha channel as a MASK, or solid white if the image has no transparency
    • width / height - dimensions in pixels (handy if you want to size conditioning to the input)
    • filename - the base filename, useful if you're building filenames or logging downstream

    There's a subtle correctness detail: the node detects file changes by content hash, so replacing example.png with a different example.png of the same name still triggers a rerun. That's the kind of thing that quietly bites people on other loaders - swap the file, hit run, nothing happens. Not here.

    Install. Same as the rest of the pack - ComfyUI Manager (search "ApoStudio") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/apoloniart/ApoStudio
    pip install -r custom_nodes/ApoStudio/requirements.txt
    

    Just requests and Pillow (the image work uses Pillow). Restart, find it under the ApoStudio category.

    Gotchas. A gif loads only its first frame - the README is explicit about that, so don't reach for this node for animated inputs. Images must live in (or be uploaded to) input/. And remember the loader itself has no vision: a captioning workflow needs a vision-capable model on your LLM server, or Chat will happily describe a PNG of base64 noise. If you only need the tensor, core Load Image is fine; if you want the mask, dimensions, filename, and EXIF fix, this is the one.

    CategoryApoStudio

    Inputs (1)

    NameTypeDefaultDescription
    imageCOMBO1 options: example.png

    Outputs (5)

    NameTypeDescription
    imageIMAGE
    maskMASK
    widthINT
    heightINT
    filenameSTRING