Nodes/ComfyUI_Swwan/Get Images From Batch Indexed (Swwan)
ComfyUI Node

Get Images From Batch Indexed (Swwan)

Pick frames by number, in any order

By aining2022·Created 12 months ago·Updated 3 days ago· 39
Get Images From Batch Indexed (Swwan)
  • images
  • IMAGE
◄indexes0, 1, 2►

The other half of batch slicing

Get Image Range From Batch gives you a start and a count - contiguous, ordered, one window. This node gives you a list: 0, 7, 12 and you get those three frames in that exact order. That's a different job, and it's the one you need more often than you'd expect: pulling keyframes for a contact sheet, grabbing the first and last frame of a clip to hand a model an image pair, reordering a batch into a specific sequence, or duplicating a frame to hold on it.

KJNodes' GetImagesFromBatchIndexed, re-registered by the Swwan pack.

How it works

indexes is parsed by splitting the string on commas and converting each piece to an integer, then used as a fancy-index into the image tensor - images[indices_tensor]. That one line tells you most of the behaviour:

  • Order is yours. 7, 0, 3 gives you frame 7 first.
  • Duplicates are allowed. 0, 0, 0, 4 gives you three copies of frame 0 then frame 4. Cheap way to hold a frame.
  • Negative indices work, because PyTorch allows them: -1 is the last frame. Convenient, and easy to misread later when you've forgotten.
  • Out-of-range indices error out with a torch index error, not a friendly message. There's no clamping.

Inputs and outputs

  • images - required IMAGE batch.
  • indexes - required STRING, default 0, 1, 2, multiline. Spaces are stripped, so 0, 1, 2 and 0,1,2 are the same. What isn't handled: anything that isn't an integer. A trailing comma (0, 1, 2,) produces an empty element and a ValueError; a range like 0-3 isn't a range, it's a crash; and 1, 2.0 is a float-conversion error. If you're generating this string programmatically, generate it clean.

Output: a single IMAGE. The output batch is exactly as long as the number of indices, and every frame keeps its original resolution - this node does not resize anything. Since a ComfyUI batch must be uniformly shaped, you can't mix frames from different-sized batches here; that's what the pack's image list nodes are for.

The index string is also a widget you can convert to an input and drive from elsewhere - a string primitive, a text file, whatever. That's the interesting wiring: an external frame list becomes your edit decision list.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/aining2022/ComfyUI_Swwan
cd ComfyUI_Swwan
python -m pip install -r requirements.txt

Manager → ComfyUI Swwan, restart, hard-refresh. Pure indexing, no models, no optional dependencies.

When to reach for it

Three cases where this beats wiring three separate range nodes: prompt/batch alignment - many workflows attach captions or conditioning per batch index, and reordering images without reordering the conditioning silently desyncs everything; a single indexing node makes the permutation visible in one place. Image pairs - first and last frame out of a clip is 0, -1, and that's an entire node saved. Presets from a long batch - pick frames 0, 24, 48, 72 out of a 96-frame render and you have a storyboard without a preview node in sight.

The failure mode to expect is a batch that quietly isn't the length you assumed. If the batch upstream was a single image (a batch of one) and you ask for 0, 1, 2, you get an index error - and on a video-extension workflow, where "images" might be a context window whose length the model chose, that's common enough that it's worth checking with Get Image Size & Count first and reading the count output when something explodes.

CategorySwwan/Advanced/Batch

Inputs (2)

NameTypeDefaultDescription
imagesIMAGE—
indexesSTRING0, 1, 2—

Outputs (1)

NameTypeDescription
IMAGEIMAGE—