Nodes/ComfyUI Illusion & Pattern Nodes/Tile Image Repeater (Smart Resize)
ComfyUI Node

Tile Image Repeater (Smart Resize)

Make your texture big without ruining the seams

By orion4d·Created about a year ago·Updated about a year ago· 3
Tile Image Repeater (Smart Resize)
  • image
  • IMAGE
horizontal_repeats3
vertical_repeats3
resize_modeNone
tile_target_size256
resampling_filterlanczos

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 equals tile_target_size; height follows the aspect ratio.
  • Height - same, anchored to the height.
  • Shortest Side - the shorter edge is set to tile_target_size; the other follows.
  • Longest Side - the longer edge is set to tile_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 (default None): the five above.
  • tile_target_size (default 256, range 0–8192, step 8): the target dimension when resizing.
  • resampling_filter (default lanczos): lanczos, bicubic, bilinear, or nearest. Default Lanczos is the right call for photos; nearest is 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.

Categoryillusion

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
horizontal_repeatsINT31–32
vertical_repeatsINT31–32
resize_modeCOMBONone5 options: None, Width, Height, Shortest Side, Longest Side
tile_target_sizeINT2560–8192Target size for the chosen dimension (Width, Height, Shortest/Longest Side). 0 or 'None' mode to disable resize.
resampling_filterCOMBOlanczos4 options: lanczos, bicubic, bilinear, nearest

Outputs (1)

NameTypeDescription
IMAGEIMAGE