Image Batch Extend With Overlap
Splice two video clips together without a visible seam
- source_images
- new_images
- images
Video generation gives you clips, and clips are short. When you want a longer sequence you stitch two batches together - and a naive cat gives you a hard cut where the style, brightness, or content jumps. Image Batch Extend With Overlap is the Eclipse node that splices two image sequences with a proper transition, and it's the one you reach for when "concat two loaders" isn't good enough.
The core idea is simple: you give it source_images (first sequence) and new_images (second), tell it how many frames of overlap to play with, and it blends the boundary so the seam disappears. But this node is a Swiss-army knife of how to blend, and the overlap_mode combo is where it gets genuinely opinionated.
The modes that matter
- pyramid_blend (default) - multi-scale Laplacian pyramid: each frequency band blends independently. Sharpest quality, which is why it's the default. If you only ever learn one mode, learn this one.
- linear_blend / ease_in_out / filmic_crossfade / perceptual_crossfade - crossfades of increasing sophistication. Filmic does gamma-correct (2.2) blending that holds up in bright regions; perceptual does a LAB-space blend to avoid hue shifts. Caveat: perceptual needs
kornia, and the node falls back to linear_blend with a console message if it's missing. - match_ncc / match_mse / match_luminance_mse / match_gradient_mse - these don't blend, they search. They scan frames of one batch against the other and hard-cut at the most visually similar pair. This is the loop-video trick: when your two clips already rhyme, cutting at the matching frame is invisible. ncc survives brightness drift, mse is fastest, gradient_mse matches structure only.
- match_*+linear / match_*+pyramid - hybrid: find the matching pair, then blend across it. The tooltip's phrase "solves the model ramp-in freeze" is the real story - this smooths the near-static tail/head frames instead of slicing through them.
- wipe_*/clock_wipe / dissolve / average / cut / concat - the show-off ones. Wipes and clock sweeps are transition effects;
cutdrops the overlap frames (withoverlap_sidedeciding whose ends get dropped);concatignores overlap entirely.
The three inputs you'll actually set
- overlap - frames of overlap. 0 = hard concat.
- overlap_side - which end(s) get searched or trimmed:
source,new_images, orboth. Default issource; for match modes,bothscans the tail of source against the head of new. - overlap_mode - the blend strategy above.
If either batch is left unconnected, the connected one passes through unchanged, so it's safe to leave both sockets in a graph and wire them later. And if the two batches differ in resolution, new_images gets center-cropped and resized to match source_images - worth knowing before you wonder why your second clip lost its edges.
Installing
ComfyUI_Eclipse, r-vage's all-in-one pack. Manager → search ComfyUI_Eclipse, or:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
Restart; it's under Eclipse → Image → Batch Operations. Base deps are standard; install kornia if you want perceptual blends. Eclipse wants current ComfyUI (frontend 1.51.2+), and its v4.0 rewrite removed legacy RvTools_v2 nodes - the built-in Workflow Migration Tool is there for old saves.
Start with pyramid_blend and overlap around 5–8. Match modes are the hidden gem - if you're extending a loop, let it find the matching frame instead of forcing a crossfade. That's the difference between "seamless" and "slightly smeared in the middle."
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| overlap | INT | 50–4096 | Number of overlapping frames between source and new images for blending modes. 0 = hard cut: the two batches are concatenated directly, overlap_mode is ignored. For match_* modes (pure): defines how many frames from each end are scanned — overlap_side=both scans last N of source AND first N of new_images; source/new_images pins one side and scans only the other. For match_*+blend hybrid modes: used as both the search window size AND the blend window applied starting at the matched cut point. |
| overlap_side | COMBO | source | Controls which side(s) are searched or trimmed. Meaning depends on overlap_mode. For cut mode: source: drops the last N frames of source_images. new_images: drops the first N frames of new_images. both: drops last N from source AND first N from new_images simultaneously (removes generated ramp/fade frames from both edges at once). For match_* modes: both: scan last N of source × first N of new_images — find the best-matching pair from both windows (default). source: pin new_images[0] as reference, search only source's tail — finds where source best matches the start of new_images. new_images: pin source[-1] as reference, search only new_images' head — finds where new_images best matches the end of source. Ignored for all other blend modes. |
| overlap_mode | COMBO | pyramid_blend | How to blend the overlapping region. linear_blend: linear cross-fade. ease_in_out: S-curve cross-fade (slow start/end). filmic_crossfade: gamma-correct (2.2) cross-fade — better in bright regions. perceptual_crossfade: LAB-space blend — avoids hue shifts across strong color differences (requires kornia). average: fixed 50/50 mix of all overlap frames — no directional fade, both generations contribute equally. dissolve: random pixel-level selection per frame (dithered transition, film-grain look). pyramid_blend: multi-scale Laplacian pyramid — each frequency band blended independently; sharpest quality. clock_wipe: clockwise sweep from 12 o'clock — a hard edge rotates across the frame like a clock hand. clock_wipe_ccw: same sweep counter-clockwise. wipe_left: hard edge sweeps left→right across the frame. wipe_right: hard edge sweeps right→left. wipe_top: hard edge sweeps top→bottom. wipe_bottom: hard edge sweeps bottom→top. cut: drops overlap frames — overlap_side=source removes last N from source; overlap_side=new_images removes first N from new_images; overlap_side=both removes last N from source AND first N from new_images simultaneously. concat: direct concatenation, no frames lost, overlap parameter ignored. match_ncc / match_mse / match_luminance_mse / match_gradient_mse: scan frames of source against frames of new_images (window size = overlap) and hard-cut at the most visually similar pair — no blending needed since the frames already match. overlap_side=both searches both ends (default); source pins new_images[0] as reference; new_images pins source[-1] as reference. ncc is invariant to brightness/color drift; mse is fastest; luminance_mse ignores hue; gradient_mse matches structure only. match_*+linear / match_*+pyramid: hybrid — finds the best matching pair exactly as above, then instead of a hard cut, applies a linear or pyramid blend window of `overlap` frames starting at that matched position. Solves the model ramp-in freeze: the blend smooths the near-static tail/head frames rather than cutting through them abruptly. |
| source_imagesopt | IMAGE | The source (first) image batch. Optional — when not connected, new_images is returned as-is. | |
| new_imagesopt | IMAGE | The new (second) image batch to extend with. Optional — when not connected, source_images is returned as-is. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | The extended image batch with the overlap region blended, or whichever single input was connected. |