Image Tile Split
Chop a huge image into overlapping tiles so your GPU stops panicking
- image
- tiles
- tile_info
Image Tile Split is the front half of this pack's tiling workflow: it cuts one large image into a batch of overlapping square tiles, hands you a metadata blob so they can be put back together, and lets you run the tiles through whatever processor you like. It exists for the oldest reason in image processing: sometimes the whole image won't fit, but a piece of it will. If you've ever watched a 4K upscale crawl on a mid-range GPU, you know the feeling.
The workflow shape is: split → process tiles → merge. The processing step is where you spend your GPU budget per tile instead of per image, which is how tiled diffusion and tiled upscaling get away with running on cards that have no business touching a 4K source (the modidex upscaling notes cover this VRAM trade in detail). This pack's pair isn't a diffusion pass itself - it's the plumbing around whatever node you want to run per tile.
Inputs
image(IMAGE) - the source.grid_size- a square grid preset:2x2up to16x16(default4x4). No rectangular grids; if you need 2x4, this isn't the node.overlap_percent(FLOAT, 0–50, default 10) - how much of each base tile extends into its neighbors, per side.
Outputs are tiles (IMAGE batch, one per grid cell) and tile_info (TILE_INFO, the reconstruction metadata).
How it works
It takes the image, divides width and height by the grid dimension, and computes an overlap in pixels as a percentage of the base tile. Then it pads the image using reflect padding so the edge tiles are complete rather than ragged, and extracts every tile in row-major order. The tile_info dict records grid size, original dimensions, tile size, overlap, and per-tile coordinates - that's the contract Image Tile Merge reads to rebuild the image, and it also tolerates tiles that came back upscaled, because the merge computes a scale factor.
What to actually set
- Overlap 20–30% is the pack author's stated sweet spot for seamless blending. Too little and seams show; too much and you waste compute on re-processed pixels.
- Grid size is a VRAM dial. Bigger cells = fewer tiles but more VRAM per tile. Start at
4x4for something like a 2K source and drop to2x2if you've got headroom, or rise to6x6/8x8if a single tile still OOMs. - Wire
tile_infostraight into the merger - it's not optional.
Gotchas
The grid is always square, so an extreme aspect ratio means many wasted tiles. And overlap is a percentage of the base tile, which scales with grid density - on a 16x16 grid, 10% overlap is a much smaller absolute pixel count than on 2x2. If you're hunting seams, adjust for that.
Installation
From Praveen's ComfyUI Tools. Install via ComfyUI Manager (search "Praveen" / "praveen-tools"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Praveenhalder/praveen-tools
Restart ComfyUI. No model downloads and no extra pip packages - it's torch, PIL, and numpy, all stock ComfyUI.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| grid_size | COMBO | 4x4 | 9 options: 2x2, 3x3, 4x4, 5x5, 6x6, 8x8, +3 |
| overlap_percent | FLOAT | 10.00–50 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| tiles | IMAGE | — |
| tile_info | TILE_INFO | — |