Cross Fade Images
Blending two clips together with a real transition
- images_1
- images_2
- IMAGE
This pack's older CreateFadeMask node gives you a fade as a MASK, which you then need a separate compositing step to actually apply. CrossFadeImages skips that middle step: it takes two image sequences directly and blends between them in one node, over whatever window of frames you choose. If you're stitching two video clips together - a scene change in a longer generated sequence, or smoothing the seam between one generation and the next so a longer video doesn't have a hard cut - this is the direct tool for it.
How it works
You give it two image batches. Starting at transition_start_index, over the next transitioning_frames frames, it blends from images_1 toward images_2 following one of eight interpolation curves, between an opacity floor of start_level and ceiling of end_level. It's a two-point fade - no midpoint stage like CreateFadeMask has - but with a much wider set of curve shapes.
The inputs that matter
images_1/images_2(IMAGE, required) - the two sequences to blend between.interpolation- eight options:linear,ease_in,ease_out,ease_in_out,bounce,elastic,glitchy,exponential_ease_out. Notably more thanCreateFadeMask's four, and several of them (bounce,elastic,glitchy) are overtly stylized - good for a deliberately jarring or playful transition rather than a smooth blend.transition_start_index(default1, range down to-4096) - which frame the transition begins at. Can go negative, which lets you anchor the transition relative to the end of the sequence instead of counting forward from frame0.transitioning_frames(default1) - how many frames the blend spans.start_level/end_level(default0/1) - the opacity bounds of the fade.
Output: IMAGE - the blended sequence.
How to install it
Via 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
Then restart. No models - pure image-sequence blending.
Common issues & troubleshooting
The transition looks like a near-instant cut, not a gradual blend. transitioning_frames defaults to 1 - that's about as close to a hard cut as this node gets, not a gradual fade. This is the parameter people most often assume is already set to something longer than it is; raise it to however many frames you actually want the blend to span.
The transition happens at the wrong point in the sequence, or throws an error. transition_start_index can be negative, which is useful for anchoring relative to the end of images_1 rather than counting from the start - but it's also the easiest input on this node to get off-by-one on the first try. Test on a short sequence before committing to a long batch render.
It errors or produces a truncated result. The most common cause is a batch-length mismatch: check that both images_1 and images_2 actually have enough frames to cover transition_start_index plus transitioning_frames - if the transition window runs past the end of either sequence, you won't get the blend you expected.
Blend looks too smooth when you wanted something punchier. Swap interpolation from linear or ease_in_out to bounce, elastic, or glitchy for a transition with real character instead of a clean fade.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| images_1 | IMAGE | — | |
| images_2 | IMAGE | — | |
| interpolation | COMBO | 8 options: linear, ease_in, ease_out, ease_in_out, bounce, elastic, +2 | |
| transition_start_index | INT | 1-4096–4096 | — |
| transitioning_frames | INT | 10–4096 | — |
| start_level | FLOAT | 0.000–1 | — |
| end_level | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |