Nodes/🐰 MaraScott Nodes/🐰 Tiles to Image - v1 /m
ComfyUI Node

🐰 Tiles to Image - v1 /m

Stitch your refined tiles back into one image

By MaraScottΒ·Created 3 years agoΒ·Updated 10 months agoΒ· 179
🐰 Tiles to Image - v1 /m
  • pipe
  • tiles
  • image
β—„output_upscale_methodbicubicβ–Ί
β—„output_size_refOutput Imageβ–Ί
β—„output_size1.00β–Ί
β—„denoise0.10β–Ί
β—„positiveβ–Ί
β—„negativeβ–Ί
β—„refresh_promptsfalseβ–Ί

The Tiler sliced your image into a grid; the Configurator and Refiner worked their magic on each tile; now someone has to put the jigsaw back together without leaving visible seams. That's the Untiler, the final piece of the McBoaty v6 pipeline and the node that decides whether your upscale looks like one image or a mosaic.

What it does

It takes the McBoaty Pipe from the Refiner (or the Configurator - the pipe carries all the grid geometry: tile size, overlap, rows, columns) and:

  1. Rebuilds the grid - stitches the refined tiles back into a single image, blending the feathered overlaps so tile boundaries vanish.
  2. Crops to the exact output size - the stitch produces some edge slop from the tiling math, so it trims to the upscaled dimensions.
  3. Optionally resamples to a custom size via output_upscale_method (bicubic default) and output_size, with output_size_ref choosing whether the size is relative to the Output Image or the Input Image.
  4. Optionally runs a final low-denoise pass - if denoise is above 0, the stitched image gets one gentle sampler pass (default 0.1) to smooth any remaining tile-boundary artifacts. This is the polish step; at 0.1 it's nearly invisible and mostly just equalizes the tiles' micro-differences.

There's also a tiles image input and positive/negative prompt strings (plus refresh_prompts) - these feed that final pass if you turn denoise up, and let you override prompts used at that stage.

Output: a single image, the finished stitched result.

The settings that matter

  • denoise (default 0.1) - the "fix the seams" dial. Keep it low. If you're seeing patchwork after a run, a small bump here (0.15–0.25) evens it out; past 0.3 you're re-sampling the whole image and starting to lose the per-tile work you did.
  • output_size_ref / output_size - how big the final image is. Default (Output Image Γ— 1.0) just returns the natural upscaled size; set ref to Input Image if you want the output relative to your original input instead.
  • output_upscale_method - the resampler for that custom-size step (area, bicubic, bilinear, bislerp, lanczos, nearest-exact). Bicubic is fine; use lanczos if you want slightly crisper downscales.

If you don't feed a tiles input, the Untiler uses the tiles already in the pipe (and, if the pipe carries a color_match_method, it'll color-match the refined tiles back toward the originals before stitching - that's the "minimal modification" guarantee doing its last job).

Where it fits

The complete v6 graph is Tiler β†’ Configurator β†’ TilePrompter β†’ Refiner β†’ Untiler, and this is the only node in the pack that emits a finished single image - everything before it carries pipes. If you're assembling the v6 pipeline by hand, it's the node that closes the loop.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/MaraScott/ComfyUI_MaraScott_Nodes

Restart or ComfyUI Manager β†’ "MaraScott". No extra models needed. Remember the pack caveat: v6 is flagged broken in the README (issue #187), so if your full v6 graph misbehaves, the stitching math here is the least likely culprit - it's straightforward grid-rebuild code. And if the whole pipeline refuses to behave, the v5 Large Refiner does upscale β†’ tile β†’ refine β†’ stitch in one stable node without any of this plumbing.

Category🐰 MaraScott/Utils

Inputs (9)

NameTypeDefaultDescription
pipeMC_BOATY_PIPEβ€”
output_upscale_methodCOMBObicubic6 options: area, bicubic, bilinear, bislerp, lanczos, nearest-exact
output_size_refCOMBOOutput Image2 options: Output Image, Input Image
output_sizeFLOAT1.000.1–16β€”
denoiseFLOAT0.100–1β€”
positiveoptSTRINGβ€”
negativeoptSTRINGβ€”
refresh_promptsoptBOOLEANfalseβ€”
tilesoptIMAGEβ€”

Outputs (1)

NameTypeDescription
imageIMAGEβ€”