⭐ Star Image Loop
Panorama in, seamless looping video out — no keyframes, no seam stitching
- image 1
- images
- fps
The cleanest video trick in the AI playbook is the Ken Burns pan on a static image - and the easiest way to ruin it is a visible seam when the pan wraps around to frame one. Star Image Loop removes the seam the cheap and correct way: it tiles your panoramic image wide enough that the pan never sees the edge, then exports frames that loop perfectly. Connect the frames to any Video Combine / save node and you have a background loop for a title card, a music video, or just a mesmerizing desktop wallpaper.
How it works
You connect one or more panorama images to the image 1 (and up) inputs. Multiple images get joined horizontally first - the node scales them to a matching height and stitches them into a longer panorama, so a 360° scene you generated in segments becomes one continuous strip. That strip is then tiled until it covers at least twice the target frame width, and the animation scrolls it left-to-right (or right-to-left) across the output window at your chosen fps for duration seconds.
Because the strip is endlessly tiled, the frame at position N and the frame at position N+length are pixel-identical - which is the entire definition of a seamless loop. There's no blending, no crossfade, no guesswork about where the seam is. It just works, which is why this is the node to reach for instead of rolling your own roll in Python.
The settings that matter
resolution- HD (1280), Full HD (1920), 2K (2560), or 4K (3840). The width; height follows from the aspect ratio. Higher is not free - 4K pan frames are heavy to encode and slow to preview.aspect_ratio- 1:1, 9:16 (TikTok/Reels), 4:5 (Instagram), 16:9 (YouTube), 3:4, 2:3. Pick your platform before you generate.fps(1–60, default 24) andduration(1–300s, default 10) - frame count isfps * duration, so mind the math: 24fps × 10s is 240 frames, which is a lot of images to hold in RAM.direction- Left to Right or Right to Left.
Outputs
images(IMAGE) - the full batch of loop frames, sized and ready. Feed it into a Video Combine / VHS_VideoCombine or a save-node that accepts image batches.fps(INT) - the framerate, passed along so your video encoder uses the right one without you re-typing it.
Installing
Part of the StarNodes pack - install Starnodes via ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
Restart, then search star on the canvas. No models needed - the heavy lifting is Pillow.
Common issues
Two gotchas show up in the wild. First, a too-small input image: if your panorama is 512px wide and you ask for 4K output, the pan will look soft because the source is being stretched. Generate at (or above) your output resolution. Second, if you feed images of very different heights, the horizontal join rescales them to a common height and the taller one loses its top - keep sources roughly uniform. And 4K + long duration will quietly eat your RAM; drop to FHD if ComfyUI starts thrashing.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| resolution | COMBO | Full HD (1920) | 4 options: HD (1280), Full HD (1920), 2K (2560), 4K (3840) |
| aspect_ratio | COMBO | 1:1 (Square) | 6 options: 1:1 (Square), 9:16 (TikTok/Reels), 4:5 (Instagram), 16:9 (YouTube), 3:4 (Portrait), 2:3 (Portrait) |
| fps | INT | 241–60 | — |
| duration | FLOAT | 10.01–300 | — |
| direction | COMBO | Left to Right | 2 options: Left to Right, Right to Left |
| image 1opt | IMAGE | First panorama image. Connect more images to join them horizontally. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| fps | INT | — |