Vantage Multiple Image Loader V2
A thumbnail gallery that emits a batch
- background
- IMAGE
- MASK
- image_0
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
Core ComfyUI has a single-image loader. The moment you want ten images at a consistent size - a contact sheet, a batch img2img pass, four cutouts to composite - you're either chaining loaders by hand or installing something. This is the something: a gallery you build by clicking thumbnails, wired to one batch output and ten individual ones.
Building the collection
Search the picker for a file in ComfyUI's input folder (subfolders included), click Add, repeat. Or drag images straight onto the node - they upload through ComfyUI's normal local endpoint and land in the gallery. Drag thumbnails to reorder; duplicates can't be added twice; Remove All clears it. Tiles shrink to fit and the gallery scrolls past 112×112.
Underneath, the gallery is stored in the image_paths string field, so it travels with the workflow. The single image widget is just the filename picker you're currently choosing from - the actual list is the gallery.
The settings that actually change your result
width and height default to 1024×1024 and are the target box every image gets fitted into. They take INT inputs, which is the point of wiring the pack's bounding-box editor's width/height outputs in - pick your composition size once and the loader follows.
fit_edge decides how the fit works, and the tooltip is better than most docs: longer fits inside width × height, shorter covers it and may exceed one dimension. Neither mode enlarges anything, so small images stay small rather than blurring up. If a picture exceeds only one dimension in shorter mode it may be left as-is rather than stretched to fill the other.
img_compression is the one people miss. Default 18, range 0–100, described as JPEG compression for gallery images - 0 disables it, higher means worse. It applies only to gallery images, not to whatever you feed the background input, and it's applied as the image comes off disk, so it's a real quality decision buried in a slider.
max_images (default 10) caps both the total and the number of individual output sockets. use_background gates the optional background IMAGE input: connect a source and one gallery slot is reserved straight away, then at execution time each frame of a background batch consumes a slot. Lowering the limit or connecting a background trims items off the end of the gallery.
Outputs
IMAGE is the full batch in background-then-gallery order. MASK is a batch of zero masks matching those dimensions - handy for inpainting or upscale nodes that insist on a mask input. Then image_0 through image_9, one resized image per slot with each keeping its own dimensions.
Two behaviours worth knowing before they confuse you. Different-sized images get center-padded with transparent borders to form a uniform batch, while the individual outputs keep their own resized size, unpadded. And unused individual outputs return None - expected, not an error, but whatever they feed has to tolerate it or be bypassed.
There's no background-removal model here and no matting controls; it loads, resizes and orders. Cutouts are somebody else's node upstream, which is fine - that's what the alpha-friendly padding and mask output are for.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/vantagewithai/Vantage-NodesV2.git
Restart ComfyUI, hard-refresh, find it under Vantage/Image, or search "Multiple Image Loader". ComfyUI Manager should also carry Vantage-NodesV2; the clone is the documented route.
No pip step - no requirements file, no declared dependencies, every import already in ComfyUI. What it does need is a current install: image drops go through ComfyUI's local upload endpoint, the picker relies on modern frontend APIs, and an old build gives you a node with a dead picker rather than an error message.
Troubleshooting
A new file isn't in the picker. Press R / Refresh Node Definitions. Files added outside the node don't appear until you do. Dropped uploads update the picker immediately.
Uploaded the same filename twice. ComfyUI's normal behaviour: identical name and bytes reuses the existing file; identical name with different bytes gets a numbered filename. Nothing is silently overwritten.
None on an image socket. That slot is beyond your loaded count. Check max_images and the gallery length.
Batch has transparent bars. Center-padding to a common size, as documented. Match aspect ratios or accept the padding.
Background ate a slot. By design - it's included in the count, one per frame for a batch.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image_paths | STRING | — | |
| width | INT | 10241–2147483647 | — |
| height | INT | 10241–2147483647 | — |
| fit_edge | COMBO | Longer fits inside width × height. Shorter covers width × height and may exceed one dimension. Neither mode enlarges images. | |
| img_compression | INT | 180–100 | — |
| use_background | BOOLEAN | true | — |
| max_images | INT | 101–2147483647 | — |
| image | COMBO | 2 options: (none), example.png | |
| backgroundopt | IMAGE | — |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |
| image_0 | IMAGE | — |
| image_1 | IMAGE | — |
| image_2 | IMAGE | — |
| image_3 | IMAGE | — |
| image_4 | IMAGE | — |
| image_5 | IMAGE | — |
| image_6 | IMAGE | — |
| image_7 | IMAGE | — |
| image_8 | IMAGE | — |
| image_9 | IMAGE | — |