Tile Image Repeater (Smart Resize)
Make your texture big without ruining the seams
- image
- IMAGE
The Tile Image Repeater takes one image and tiles it into a bigger image - a grid of copies of your base tile. "Smart Resize" is the part that separates it from a plain np.tile: it can resize the tile first so that every tile ends up a predictable size, and it lets you pick the resampling filter. If you've got a 128×128 pattern from the pack's PatternGenerator and you want a 1024×1024 texture, this is the node. It's the pack's quiet utility - nothing flashy, but you'll reach for it more than you expect.
How it works
The base image optionally gets resized with PIL (using your chosen resampling_filter), then the resized tile is repeated via np.tile into a grid of horizontal_repeats by vertical_repeats. The resize is the interesting part:
None(default) - no resizing, tile at native size. Simplest and usually what you want.Width- tile is resized so its width equalstile_target_size; height follows the aspect ratio.Height- same, anchored to the height.Shortest Side- the shorter edge is set totile_target_size; the other follows.Longest Side- the longer edge is set totile_target_size.
That last pair is the "smart" bit: they normalize tiles regardless of orientation. Set tile_target_size to 0 (or keep None) to disable resize entirely - the tooltip says exactly that.
The inputs that matter
image- the base tile.horizontal_repeats/vertical_repeats(default 3 each, range 1–32): copies across and down. Output size is repeats × tile size, so do the math before running.resize_mode(defaultNone): the five above.tile_target_size(default 256, range 0–8192, step 8): the target dimension when resizing.resampling_filter(defaultlanczos):lanczos,bicubic,bilinear, ornearest. Default Lanczos is the right call for photos;nearestis the fun one - it keeps pixels chunky for that retro pixel-art look.
One IMAGE output, in standard ComfyUI float tensor form.
Install
Ships in orion4d/illusion_node, "ComfyUI Illusion & Pattern Nodes", under the "illusion" category. Install via ComfyUI Manager (search "Illusion") or:
cd ComfyUI/custom_nodes
git clone https://github.com/orion4d/illusion_node.git
Restart ComfyUI. Pack requirements are numpy, torch, and Pillow - already present in a stock ComfyUI, no model files, no extra packages.
Common issues
The recurring confusion is resize math: because Width and Height preserve aspect ratio, the other dimension isn't tile_target_size, so the final image won't be a neat multiple of your target unless the tile already matches. If you want exact grid squares, generate square tiles and use Width (or Height) with a matching target. Also, tiling doesn't make a texture seamless - if your source has visible edges, you'll see them repeated like wallpaper; a seamless-generator node does that job, this one just multiplies. And mind the output size: 32 repeats of a 1024px tile is a 32K image that will happily melt your VRAM when something downstream touches it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| horizontal_repeats | INT | 31–32 | — |
| vertical_repeats | INT | 31–32 | — |
| resize_mode | COMBO | None | 5 options: None, Width, Height, Shortest Side, Longest Side |
| tile_target_size | INT | 2560–8192 | Target size for the chosen dimension (Width, Height, Shortest/Longest Side). 0 or 'None' mode to disable resize. |
| resampling_filter | COMBO | lanczos | 4 options: lanczos, bicubic, bilinear, nearest |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |