Nodes/Comfy Cabinet/πŸ–ΌοΈ Easy Multi-Image Loader
ComfyUI Node

πŸ–ΌοΈ Easy Multi-Image Loader

The ComfyUI node that holds your whole reference folder β€” gallery, lightbox, and queue cycling built in

By Zed93Β·Created 2 months agoΒ·Updated 12 days agoΒ· 0
πŸ–ΌοΈ Easy Multi-Image Loader
    • IMAGE
    • MASK
    • filename
    • current_index
    • total_images
    • progress_percent
    β—„modeFixed / Selected Indexβ–Ί
    β—„index1β–Ί
    β—„images_list[]β–Ί
    β—„subfolderβ–Ί
    β—„batch_size1β–Ί

    The standard way to feed a few images into a ComfyUI workflow is a pile of LoadImage nodes - one per image, each a tiny thumbnail you can barely see, and swapping in a new reference means re-picking it from a dropdown. Fine for one image. Painful for a dozen, and it dies completely when what you actually want is "run my img2img/IPAdapter workflow over this folder of images, one at a time."

    The πŸ–ΌοΈ Easy Multi-Image Loader is the fix for that second case. It's one node from Zed93's small Comfy Cabinet pack (four nodes, all "Easy" something, all with a fancy injected web UI) that holds a whole list of images, shows them as a real gallery inside the node, and lets you pick one - or cycle through them automatically as you hit queue. It reads straight from ComfyUI's input/ folder, needs no API key, calls no external service, and downloads no models. That last bit matters because its sibling nodes in the same pack (the checkpoint and LoRA loaders) do want a Civitai API key for metadata sync. This one is the offline, no-drama member of the family.

    How it actually works

    Under the hood it's a souped-up LoadImage: you feed it a list of image paths, it loads them from input/ (or a subfolder), and on execution it hands you the image as a tensor. The interesting part is the state machine on top:

    • Fixed / Selected Index - outputs the image you clicked in the gallery. This is the mode you'll leave it in 90% of the time.
    • Cycle (Increment) / Cycle (Decrement) - advance one image per execution, wrapping around at the end. Set mode to Cycle, hit queue repeatedly, and each generation uses the next image. That's the "run a folder through my pipeline" workflow, and it's why the node exists.
    • Random - picks a random image every execution.

    ComfyUI caches node results unless the node says it changed - this one's IS_CHANGED returns a fresh timestamp in Cycle/Random modes, so it always re-executes, which is what advancing needs. Cycle position is tracked per node instance in memory, and each run fires a progress event to the UI so you get the Image X / Y (Z%) bar while a batch churns.

    The inputs and outputs that matter

    You mostly set three things:

    • mode - the output mode above. Defaults to Fixed.
    • index - which image (1-based) to output in Fixed mode. It wraps, so an index past the end of the list just loops back around.
    • batch_size - outputs that many consecutive images at once as a batch (up to 64), for downstream nodes that want multiple images per run.

    The optional images_list widget is where the gallery stores its file list (a JSON array of paths - you can paste one in by hand), and subfolder makes the node auto-scan any subfolder of input/ recursively.

    Outputs: IMAGE and MASK wire into your sampler (img2img), VAE encode, IPAdapter, or anything else that eats tensors - the mask follows the standard LoadImage convention, derived from the image's alpha channel and inverted, so a transparent PNG's mask marks the transparent region. filename, current_index, total_images, and progress_percent round it out - handy for a SaveImage prefix or a text display that tells you which input a given output came from.

    Installing it

    ComfyUI Manager: search Comfy Cabinet and install. Or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Zed93/Comfy-Cabinet.git
    

    Restart ComfyUI. That's it - no model files, and the only declared dependency (aiohttp) is already part of ComfyUI's runtime. The gallery UI ships as bundled JavaScript.

    Where people get burned

    • "No images found" - the list has to be files inside input/ (or a subfolder you named). Drop an image onto the node and it copies into input/ for you, but pasting an absolute path to some other folder on disk won't resolve - the same failure that bites LoadImage everywhere.
    • The cycle resets. Cycle position lives in memory, keyed to the node's id. Restart ComfyUI, switch modes, or duplicate the node and the cycle restarts from your index. Not a bug, but it surprises people who expect it to remember.
    • Mixed-size batches get stretched. When batch_size pulls in images of different dimensions, the node bilinear-resizes everything to match the first one. Keep your references the same resolution or you'll get distortion.
    • Old versions had gallery bugs. The 0.2.x web-UI rework shipped with glitches around the lightbox - closing it could blank the node's gallery - fixed in 0.2.3. Update the pack if your gallery misbehaves.

    Worth it? If you live on LoadImage for a handful of references, no - don't add a pack for this. If you're building queue-driven batch workflows or want a real lightbox for judging your reference set on the canvas, it's a genuine upgrade - and the only one of Cabinet's nodes that won't nag you for a Civitai key.

    CategoryπŸ—„οΈ Comfy Cabinet

    Inputs (5)

    NameTypeDefaultDescription
    modeCOMBOFixed / Selected Index4 options: Fixed / Selected Index, Cycle (Increment), Cycle (Decrement), Random
    indexINT11–999999β€”
    images_listoptSTRING[]β€”
    subfolderoptSTRINGβ€”
    batch_sizeoptINT11–64β€”

    Outputs (6)

    NameTypeDescription
    IMAGEIMAGEβ€”
    MASKMASKβ€”
    filenameSTRINGβ€”
    current_indexINTβ€”
    total_imagesINTβ€”
    progress_percentFLOATβ€”