Nodes/ComfyUI GOAT Nodes/🐐 Image Untiler
ComfyUI Node

🐐 Image Untiler

Reassemble tiles back into one image without a visible grid

By AconexOfficialΒ·Created 2 years agoΒ·Updated 12 months agoΒ· 11
🐐 Image Untiler
  • images
  • tile_data
  • IMAGE
β—„blend_modesineβ–Ί
β—„blend_range128β–Ί

The other half of GOAT's tiling pair - Image Untiler takes whatever came out of Image Tiler (optionally after you've done something to each tile in between, like running them through SamplerTiledContextAdvanced) and merges them back into one continuous image. The whole point of splitting an image into overlapping tiles in the first place is being able to sew them back together without a visible grid, and that reassembly step is entirely this node's job.

How it works

It needs the exact tile_data bundle that Image Tiler produced for this image - that's where it gets each tile's position and how the grid was laid out, so it knows where every tile belongs and how much overlap to expect. Reassembly isn't a simple paste: in the overlapping region between adjacent tiles, it blends rather than picks one tile's pixels outright, and blend_range and blend_mode control exactly how. blend_range sets how wide the blended transition zone is; blend_mode picks the falloff shape across it - linear for a straight ramp, or one of the smoother curved options (sine, the default, cubic, quadratic, hermite, or the two mix modes) for a gentler transition that tends to hide the seam better on photographic content, where a hard linear ramp is more likely to leave a faint visible line if the two tiles don't match exactly.

This is the same blending mechanism GOAT's Image Stitch node uses for its own crop/paste job - both nodes share the concept even though they're solving different problems (reassembling a tiled grid versus pasting a detail-pass crop back onto its original).

Inputs and outputs that matter

  • images - the tile batch, generally the same tiles Image Tiler produced, possibly after processing each one individually.
  • tile_data - must be the exact TILE_DATA object Image Tiler generated for this image; it's a pack-specific type that carries the grid layout and overlap info this node needs to know where everything goes.
  • blend_mode (default sine) - the falloff curve across the overlap zone.
  • blend_range (0–8192, default 128) - how wide that blended transition is.

One output: IMAGE - the full reassembled result.

How to install it

ComfyUI Manager: search "GOAT Nodes", install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes.git

then restart. No models required - it's blending math over an image grid.

Common issues & troubleshooting

Grid lines visible in the output. The most likely cause is blend_range here not matching what you actually generated with - if you tiled with a certain overlap in Image Tiler but the tiles were subsequently resized or cropped before reaching this node, the tile_data positions and the actual tile content can go out of sync, producing visible seams. Keep the tile batch's dimensions consistent with what Image Tiler originally produced.

Reordered or filtered tiles. Same rule as Image Stitch's crop_data: if you drop, reorder, or otherwise alter the batch of tiles between Image Tiler and this node, reassembly will place content in the wrong spot or fail outright. If a per-tile process needs to skip or reorder tiles, that's a case for handling tile_data bookkeeping explicitly rather than assuming this node will figure it out.

Seam still visible despite blending. If whatever ran between Image Tiler and this node (a sampler, a color adjustment) treated each tile completely independently with no shared context, adjacent tiles can diverge enough in content or tone that no amount of blending fully hides it - that's exactly the problem GOAT's SamplerTiledContextAdvanced exists to prevent, by giving each tile awareness of a shared global context while it's being processed.

Category🐐 GOAT Nodes/Image

Inputs (4)

NameTypeDefaultDescription
imagesIMAGEβ€”
tile_dataTILE_DATAβ€”
blend_modeCOMBOsine7 options: linear, sine, cubic, quadratic, hermite, sine_quadratic_mix, +1
blend_rangeINT1280–8192β€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEβ€”