💀Image Tiling Pattern
Repeat an image into a canvas, with rotation and chaos
- image
- image2
- image3
- image4
- image
Tiling is a bread-and-butter compositing move: take one small image and repeat it across a larger canvas - a texture, a pattern, a contact-sheet layout. 💀Image Tiling Pattern from the S4Tool-Image pack does that, and then it goes further than most tiling nodes by letting you rotate, scale, offset, and randomize each instance, plus drop in up to three extra images so tiles can mix. It's a small pattern generator hiding inside an image pack.
The mechanism is straightforward compositing math: the node lays your input image down repeatedly across a canvas of your requested width and height, applying per-tile spacing, offset, rotation, scale, and opacity as it goes. The randomization knobs add jitter to scale, rotation, and opacity per tile - which is what turns a robotic grid into something that looks like a hand-placed collage or a natural texture. Up to four source images (the main one plus image2–image4) can participate, so mixed-element patterns are possible without stacking nodes.
The inputs that matter
The image plus canvas size are the core:
image- the tile source.width/height(up to 4096, default 1024) - output canvas size.
Then the per-tile controls:
scale(0–10, default 1),rotation(0–360),opacity(0–1),spacingandoffset- the manual layout knobs.spacingandoffsettake small values (±10) in whatever tile-unit the node uses internally; you'll feel your way in.padding_top/padding_right/padding_bottom/padding_left- reserved margins on each side of the canvas.randomize_scale,randomize_rotation,randomize_opacity(0–100) - jitter amount for each property. Start low; 100 is a lot of chaos.- Optional
image2,image3,image4- extra tile sources to mix in.
Output: image - the tiled canvas as an IMAGE.
Install
Standard pack install:
cd ComfyUI/custom_nodes/
git clone https://github.com/S4MUEL-404/ComfyUI-S4Tool-Image.git
pip install -r ComfyUI-S4Tool-Image/requirements.txt
Or ComfyUI Manager → search "S4Tool-Image" → Install → restart. Pure Pillow/numpy, no model downloads.
Gotchas
- Not a seamless-tile generator - the name says "tiling pattern," but this node doesn't make edges wrap seamlessly; it places repeated instances on a canvas. If you need a truly seamless texture for a diffuse pass, this isn't that tool.
- Randomization is unseeded -
randomize_*values change with each run, so if you need a reproducible pattern, keep randomization at 0 and rely on the fixed layout knobs. - Spacing/offset feel abstract at first - they're unitless small floats; budget a couple of test runs to calibrate before building the real workflow.
- Compositing, not geometry - tiles are drawn over each other, so a large
scalewith multiple images can cover earlier tiles. Order matters.
For quick patterns, collages, and mixed-element layouts it's a genuinely useful one-node solution - just know you're getting placement, not seamlessness.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| width | INT | 10241–4096 | — |
| height | INT | 10241–4096 | — |
| spacing | FLOAT | 0.00-10–10 | — |
| offset | FLOAT | 0.00-10–10 | — |
| rotation | FLOAT | 00–360 | — |
| scale | FLOAT | 1.000–10 | — |
| opacity | FLOAT | 1.000–1 | — |
| padding_top | INT | 00–2048 | — |
| padding_right | INT | 00–2048 | — |
| padding_bottom | INT | 00–2048 | — |
| padding_left | INT | 00–2048 | — |
| randomize_scale | INT | 00–100 | — |
| randomize_rotation | INT | 00–100 | — |
| randomize_opacity | INT | 00–100 | — |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |