Image Transition Left to Right
A slide-wipe transition, not a crossfade
- before_image
- after_image
- images
- duration
- fps
There's more than one way to cut between two images, and a plain crossfade isn't always the look you want. ImageTransitionLeftToRight does a directional slide instead: the first image slides off to the right while the second image slides in from the left to take its place - the same wipe you've seen in every slideshow app, generated as a ComfyUI frame batch.
What it's for
This is one of four directional siblings in the pack (left-to-right, right-to-left, top-to-bottom, bottom-to-top - this article covers left-to-right specifically). Where ImageTransition blends opacity, these slide the actual image content across the frame. Reach for this one when you want a scene change to read as physical motion rather than a dissolve - think slideshow-style presentation clips, before/after reveals, or a transition between two shots in a short video assembled in ComfyUI.
How it works
Each frame in the output batch is a composite: part of the outgoing image, part of the incoming one, split by a moving line that sweeps left to right across the canvas as the sequence progresses. It's not a fixed instant cut with a wipe line frozen in place - the line itself travels frame to frame, and the node gives you real control over the timing of that travel, not just its speed.
The inputs and outputs that matter
before_image/after_image(IMAGE) - the outgoing and incoming images, same dimensions.duration(default 5, 0.1–60) andfps(default 24, 1–120) - together these set how many frames get generated and are also passed straight through as outputs, so you can wire them directly into a video-combine node's frame-rate input without re-typing the number.bounce_back(default false) - when enabled, the transition plays forward then reverses back to the start instead of stopping once it completes, useful for a looping preview clip.start_end_pause_percent(default 0.09) andmiddle_pause_percent(default 0.15) - hold time, as a fraction of total duration, spent sitting still at the start/end and at the fully-transitioned midpoint before continuing (relevant mainly withbounce_backon, so the swap doesn't feel instantaneous before it reverses).start_end_position_percent(default 0.06) - how far the slide's start and end points sit inset from the frame edges, rather than starting exactly at the boundary.transition_line_width(default 8) - the pixel width of the visible seam drawn at the wipe boundary as it sweeps across.
Outputs: images (the frame batch), plus duration and fps passed through for convenience downstream.
How to install it
Via ComfyUI Manager, search "ComfyUI-utils-nodes." Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/zhangp365/ComfyUI-utils-nodes
Restart ComfyUI. No models to download - this is geometry and compositing, so it's a quick install with no extra dependencies to worry about.
Common issues & troubleshooting
Same size requirement as the rest of the image-blending nodes in this pack: before_image and after_image need matching dimensions, since the node is compositing them into shared frames.
The parameter that trips people up most is duration/fps versus frame count - this node doesn't take a frames input directly like ImageTransition does; it derives frame count from duration × fps internally. If your output feels too short or too choppy, that's the pair to adjust rather than hunting for a frame-count field that isn't there. And if you only want a clean instant wipe with no held pauses, set start_end_pause_percent and middle_pause_percent down toward zero - the defaults bake in a little breathing room at both ends, which is nice for a looping bounce but can feel like dead air in a straight one-shot transition.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| before_image | IMAGE | — | |
| after_image | IMAGE | — | |
| duration | FLOAT | 5.00.1–60 | — |
| fps | FLOAT | 241–120 | — |
| bounce_backopt | BOOLEAN | false | — |
| start_end_pause_percentopt | FLOAT | 0.090–0.5 | — |
| middle_pause_percentopt | FLOAT | 0.150–0.5 | — |
| start_end_position_percentopt | FLOAT | 0.060–0.5 | — |
| transition_line_widthopt | INT | 81–20 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| duration | FLOAT | — |
| fps | FLOAT | — |