Nodes/ComfyUI-Koolook/Easy Image Batch (Koolook)
ComfyUI Node

Easy Image Batch (Koolook)

Easy Image Batch

By malkuthro·Created 11 months ago·Updated a day ago· 8
Easy Image Batch (Koolook)
  • keyframes_insert
  • keyframe_batch
  • source_batch
  • image1
  • image2
  • image3
  • image4
  • image_batch
  • alpha_batch
  • selected_image_batch
  • selected_frames
total_frames81
cut_start_frame1
placeholder_colorBlack
invert_alphafalse
source_frames
image1_frame5
image2_frame9
image3_frame13
image4_frame17
width512
height512

Easy Image Batch is a frame-accurate timeline builder for VFX work: it takes a handful of image slots and turns them into a full-length image batch with placeholders filling the gaps. You know how a compositor works - render a few key frames, leave black or gray for the rest, build the cut, check timing - before you commit to rendering everything. That's this node.

It's built around 1-based VFX frame numbers, because real plate pipelines number frames from the shot's start, not from zero. You give it a cut_start_frame (the first VFX frame your output represents), a total_frames window, and it lays out a batch where your connected images land at their specified frame numbers and everything else is placeholder_color.

How it works

The core is image1 through image4, each with an imageN_frame widget that says which VFX frame that image sits at (defaults of 5, 9, 13, 17 - spread out, but you'll change them). Unwired slots are ignored. Beyond that there are two heavier modes:

  • source_frames - a free-form 1-based frame list (commas, spaces, tabs, newlines; 14-17 expands to 14,15,16,17). With keyframes_insert connected, a packed sequence gets inserted onto the timeline at those exact positions: first frame → first number, second → second, etc. Without a source batch, the gaps fill with placeholder color ("offset/reconstruct mode"); with one connected, inserts composite over the source frames in the cut window.
  • source_batch - a background plate. When connected, it becomes the backdrop for the whole window and the inserts land on top.

The output is more useful than a plain image: image_batch is the assembled frames, alpha_batch is a MASK where selected frames are black and empty frames are white (flip it with invert_alpha to get a comp-ready holdout), selected_image_batch is just the frames you actually placed, and selected_frames tells you which VFX frame numbers those were. If you're building a cut where an upstream node only needs the real frames, that last pair saves you a lot of slicing.

The inputs a beginner actually sets

Three, honestly. cut_start_frame and total_frames define the window, and placeholder_color decides whether the gaps read as "empty black" or "preview gray." Everything else - the image slots, the insert mode, the source batch - you add as your workflow gets more elaborate. width/height only matter in the fully-empty case (a clean placeholder batch); once any image is connected, its dimensions win.

Install

Part of the ComfyUI-Koolook pack. Manager → Install Custom Nodes → Git URL:

https://github.com/malkuthro/ComfyUI-Koolook.git

Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/malkuthro/ComfyUI-Koolook.git

Restart, and it's under Koolook/Image. No models, no dependencies beyond what ComfyUI already ships. As with everything in this pack, install it exactly once - a Manager install is custom_nodes/koolook/, and a second git clone creates a parallel install that double-registers everything and corrupts the workflow store on each boot until you remove one folder.

Common issues

  • Frames land one off - everything here is 1-based. Frame 5 means VFX frame 5, and output index 0 represents cut_start_frame, not frame 1.
  • Empty frames are white when you expected black - check invert_alpha and placeholder_color; the alpha semantics (selected = black/0 by default) are easy to flip by accident.
  • The keyframe_batch input you saw in an old workflow - that's a deprecated alias for keyframes_insert, kept so pre-rename workflows still load. Use the new name; the old one is ignored when both are connected.
CategoryKoolook/Image

Inputs (18)

NameTypeDefaultDescription
total_framesINT811–1024Length of the output cut window in frames.
cut_start_frameINT11–999999First VFX frame represented by output index 0. All frame numbers are 1-based.
placeholder_colorCOMBOBlackFill color for empty frames in image_batch. Alpha output is controlled separately.
invert_alphaBOOLEANfalseOff: selected frames are black/0 and empty frames are white/1. On: selected frames are white/1 for compositing.
source_framesSTRINGOptional 1-based VFX frame list to pick from source_batch (in insert mode, the destination positions). Separators: commas, spaces, tabs, or newlines. Inclusive ranges like 14-17 expand to 14,15,16,17.
image1_frameINT51–9999991-based VFX frame number for image1; the connected image is placed here on top (no effect when the slot is unwired).
keyframes_insertoptIMAGEConnect a packed sequence of frames to INSERT them onto the timeline at the positions from the frame list (source_frames): 1st frame -> 1st number, 2nd -> 2nd, ... Connected image1-4 still composite on top of the inserts. The background depends on source_batch: if source_batch is NOT connected, the gaps are filled with placeholder_color (offset/reconstruct mode); if source_batch IS connected, the inserts are composited over the source frames in the cut window (insert-over-source mode). With an empty frame list and no slots nothing is placed: a clean placeholder batch (no source_batch) or a clean source-batch passthrough (with source_batch).
keyframe_batchoptIMAGEDeprecated alias for keyframes_insert (the input was renamed before release). Use keyframes_insert; this alias keeps pre-rename workflows loading. Ignored when keyframes_insert is also connected.
source_batchoptIMAGE
image1optIMAGE
image2optIMAGE
image2_frameoptINT91–9999991-based VFX frame number for image2; the connected image is placed here on top (no effect when the slot is unwired).
image3optIMAGE
image3_frameoptINT131–9999991-based VFX frame number for image3; the connected image is placed here on top (no effect when the slot is unwired).
image4optIMAGE
image4_frameoptINT171–9999991-based VFX frame number for image4; the connected image is placed here on top (no effect when the slot is unwired).
widthoptINT5121–8192Fallback output width. Used ONLY when no image input provides dimensions (e.g. a fully empty node producing a clean placeholder batch). Ignored whenever an image source is connected.
heightoptINT5121–8192Fallback output height. Used ONLY when no image input provides dimensions (e.g. a fully empty node producing a clean placeholder batch). Ignored whenever an image source is connected.

Outputs (4)

NameTypeDescription
image_batchIMAGE
alpha_batchMASK
selected_image_batchIMAGE
selected_framesSTRING