Nodes/KJNodes for ComfyUI/Image Batch Join With Transition
ComfyUI Node Runs on cloud

Image Batch Join With Transition

Stitch two clips together with a real transition

By kijai·Created 3 years ago·Updated about 9 hours ago· 2,930
Image Batch Join With Transition
  • images_1
  • images_2
  • IMAGE
start_index0
interpolation
transition_type
transitioning_frames1
blur_radius0.0
reversefalse
deviceCPU

Joining two video clips is easy - you concatenate the frame batches and you're done. But a hard cut between two AI-generated clips looks jarring. ImageBatchJoinWithTransition joins two batches and blends them across a chosen number of frames with an actual animated transition: a slide, a fade, a circle wipe, a door open. During the blend, frames from both clips play together, so the video keeps moving through the join instead of freezing on a crossfade.

If you're assembling longer videos out of shorter generated segments, this is the node that makes the seams look intentional instead of accidental.

How it works

You give it two image batches and tell it where in the first batch the transition should start. Over transitioning_frames, it blends the two clips using the transition shape and easing you pick, then continues into the second clip. Because it composites frame-by-frame during the overlap, both clips are still animating while the wipe happens - that's the detail that makes it read as a proper edit rather than a still-image dissolve.

It's a surprisingly deep little node for something in a "random collection of utility nodes" pack - you get a whole menu of transition types and easing curves, which is more than most dedicated video nodes bother with.

The inputs and outputs that matter

The two that define the join:

  • images_1 and images_2 (IMAGE) - first clip, then second.
  • start_index (INT, default 0) - where in images_1 the transition begins.
  • transitioning_frames (INT, default 1) - how long the blend lasts. This is your main dial: 1 is basically a cut, higher numbers give a longer, smoother handoff.

The style controls:

  • transition_type - horizontal/vertical slide, box, circle, horizontal/vertical door, or fade. fade is the safe classic; the slides and wipes are more cinematic.
  • interpolation - the easing curve: linear, ease_in, ease_out, ease_in_out, bounce, elastic, glitchy, exponential_ease_out. ease_in_out feels natural; glitchy and elastic are stylistic.
  • blur_radius (FLOAT, default 0) - softens the transition edge.
  • reverse (BOOLEAN) - flips the transition direction.
  • device (CPU / GPU, default CPU) - set it to GPU for anything non-trivial; CPU is fine for tiny jobs but slow on big batches.

Output is a single IMAGE batch - the two clips, joined and blended, ready for your video combine node.

How to install it

ComfyUI Manager: search KJNodes for ComfyUI, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-KJNodes
pip install -r ComfyUI-KJNodes/requirements.txt

Restart and it's under KJNodes/image. No model downloads.

Common issues & troubleshooting

The transition is too abrupt. transitioning_frames is probably 1 or very low. Raise it - 8 to 16 frames gives a transition you can actually see. Remember those frames overlap the two clips, so a long transition eats into both.

Resolution mismatch errors. The two batches should share the same width and height. Blending frames of different dimensions doesn't work cleanly - resize images_2 to match images_1 upstream.

It's slow. You're likely on CPU. Flip device to GPU. On big, high-res batches the difference is large.

The blend looks off / lands in the wrong place. Check start_index. If it's set past the length of images_1, or at 0 when you wanted the transition later, the join happens somewhere you didn't intend. Count frames and set it deliberately.

I just want a plain cut. Then you don't need this node - a straight batch concatenation joins two clips with no transition. Use this one specifically when you want the blend.

CategoryKJNodes/image

Inputs (9)

NameTypeDefaultDescription
images_1IMAGE
images_2IMAGE
start_indexINT0-10000–10000
interpolationCOMBO8 options: linear, ease_in, ease_out, ease_in_out, bounce, elastic, +2
transition_typeCOMBO7 options: horizontal slide, vertical slide, box, circle, horizontal door, vertical door, +1
transitioning_framesINT11–4096
blur_radiusFLOAT0.00–100
reverseBOOLEANfalse
deviceCOMBOCPU2 options: CPU, GPU

Outputs (1)

NameTypeDescription
IMAGEIMAGE