Load Image from Zip
Load Image from Zip
- image_batch
- count
ComfyUI's built-in Load Image is single-image by design. When you want to run a batch of fifty reference images through an IPAdapter, a face-detection pass, or a ControlNet comparison, clicking them in one by one is misery. Load Image from Zip (class LoadZipBatch) is the lhyNodes answer: you upload one .zip, and it hands you the whole set as a batch object plus a count.
The workflow is: put your images in a zip, drag the zip onto the node (or upload via the browser), pick it from the filename dropdown, and you get two outputs - image_batch and count (an INT, handy for sanity-checking or wiring into a loop). The node reads from ComfyUI's input/zip folder and lists every archive there, newest first.
The thing to understand: the image_batch type
Here's where beginners get stuck. image_batch is not a normal IMAGE tensor - it's a custom type that this pack defines, and it's how lhyNodes moves groups of images around. You don't plug it straight into a KSampler. You feed it through the pack's companion converters - Image Batch to Images or Image Batch to Image List - which turn it into a proper IMAGE (plus an alpha MASK), with options for resize, crop, and padding to a target resolution. So the chain is: LoadZipBatch → Image Batch to Images → whatever actually consumes the images.
The zip loader itself is picky in ways that save you later:
- It only accepts
.jpg,.jpeg,.png,.webp,.bmp. Anything else in the archive is skipped with a warning. - Hidden files,
__MACOSX/folders, and directory entries are filtered out automatically - so a zip made on macOS just works. - EXIF orientation is applied on load, which is a nice touch most people don't expect.
- Password-protected zips are rejected outright - the node throws an error. Don't zip your batch with a password.
Common issues
The most common failure is "No batches found!" - that means nothing is in input/zip yet (or the dropdown shows None). Drag the file onto the node and it lands in the right folder automatically; if you dropped a zip elsewhere, move it into ComfyUI/input/zip and refresh the node. A corrupt or non-zip file with a .zip extension gives a clear "not a valid ZIP file" error, so that one's easy to diagnose.
One thing to watch: the node can't see an archive you just added until the dropdown refreshes. Toggle the node or reload the workflow if the new zip isn't listed.
Installing it
This is part of lhaoyun6/ComfyUI-lhyNodes, an efficiency-node suite from lhaoyun6 (also the author of the ComfyUI-FlashVSR_Ultra_Fast video upscaler). Install via ComfyUI Manager by searching for lhyNodes, or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/lihaoyun6/ComfyUI-lhyNodes.git
python -m pip install -r ComfyUI-lhyNodes/requirements.txt
Then restart ComfyUI. The shared requirements (ultralytics, opencv-python, numpy, yarl) are installed by that one command, and no model files are needed for this node.
If you're the sort of person who feeds reference sets through a workflow over and over, this is the node that turns "upload fifty images" into "drag one file." That's the whole pitch, and it holds up.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| filename | COMBO | 1 options: None |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image_batch | image_batch | — |
| count | INT | — |