Nodes/ComfyUI Deploy/External Image Batch (ComfyUI Deploy)
ComfyUI Node

External Image Batch (ComfyUI Deploy)

Send a whole batch of images to a deployed workflow — from one JSON array

By BennyKok·Created 3 years ago·Updated 9 months ago· 1,529
External Image Batch (ComfyUI Deploy)
  • default_value
  • image
â—„input_idinput_imagesâ–º
â—„images[]â–º
â—„display_nameâ–º
â—„descriptionâ–º

The plain External Image node takes one image per call. Real deployed workflows are greedier than that - multi-reference img2img, ControlNet that wants several conditioning frames, video pipelines that need a sequence of input frames. "External Image Batch" is the input node for those: it accepts a JSON array of image URLs (or base64 data URIs, or even URLs to zips of images), loads them all, and returns a single batched IMAGE tensor.

The caller's payload is a JSON string like ["https://…/a.png", "data:image/png;base64,…"], and the node turns that list into one tensor with everything stacked along the batch dimension. It's the multi-image version of the External family's core promise: callers feed your API images without ever touching your disk.

How it works

The images field is a JSON array, decoded with json.loads. Each entry is handled by type: an http URL ending in .zip gets fetched and unpacked (every PNG/JPG inside becomes a batch item); a plain http URL is fetched as one image; a base64 data URI is decoded. Every loaded image is resized - with a lanczos upscale - to match the first image's dimensions, then everything is concatenated into a single batched tensor. If the array is empty and a default_value is wired in, that's used instead.

Inputs and output

  • input_id - default input_images. The key callers use to address this input.
  • images - the JSON array of URLs/base64/zip-URLs. Default "[]".
  • default_value - optional IMAGE fallback when the array is empty.
  • Optional: display_name, description.

Output: image (IMAGE), one batch tensor ready for a batch-capable node downstream.

Installing it

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/BennyKok/comfyui-deploy.git

Restart ComfyUI, or install "ComfyUI Deploy" via ComfyUI Manager. No models, no key.

Where people get burned

The resize-to-first-image behavior is the thing to internalize: batch order isn't just order, it's the definition of the canvas size. Whatever image is first sets the dimensions everything else gets warped to, so a portrait first followed by a landscape gives you a landscape-stretched portrait. If your workflow expects a specific aspect ratio, make the caller's first image the reference - or sort deliberately - instead of discovering the mismatch in the output.

Second gotcha: the images field is a raw JSON string, and callers will absolutely send you malformed JSON. A parse error lands you in the catch-all, the list silently becomes empty, and you fall back to the default - again the pack's lenient failure mode. Validate the payload on your side before it reaches this node. And note the zip support is a genuinely nice touch for "give me 50 frames" calls: one zip URL beats 50 URLs in your API docs every time.

Category🔗ComfyDeploy

Inputs (5)

NameTypeDefaultDescription
input_idSTRINGinput_images—
imagesSTRING[]—
default_valueoptIMAGE—
display_nameoptSTRING—
descriptionoptSTRING—

Outputs (1)

NameTypeDescription
imageIMAGE—