πΌοΈ Easy Multi-Image Loader
The ComfyUI node that holds your whole reference folder β gallery, lightbox, and queue cycling built in
- IMAGE
- MASK
- filename
- current_index
- total_images
- progress_percent
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. Setmodeto 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 intoinput/for you, but pasting an absolute path to some other folder on disk won't resolve - the same failure that bitesLoadImageeverywhere. - 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_sizepulls 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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | Fixed / Selected Index | 4 options: Fixed / Selected Index, Cycle (Increment), Cycle (Decrement), Random |
| index | INT | 11β999999 | β |
| images_listopt | STRING | [] | β |
| subfolderopt | STRING | β | |
| batch_sizeopt | INT | 11β64 | β |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |
| MASK | MASK | β |
| filename | STRING | β |
| current_index | INT | β |
| total_images | INT | β |
| progress_percent | FLOAT | β |