TTP_Image_Tile_Batch
Cut a big image into a tile batch for upscaling
- image
- IMAGES
- POSITIONS
- ORIGINAL_SIZE
- GRID_SIZE
This is the node that starts what TTPlanetPig's own README now calls "TTP Tile 1.0" - the original, fixed-grid tiled-upscale workflow the pack shipped before Smart Tile 2.0 came along. If you're doing a classic 4x/8x-megapixel upscale on Flux, Hunyuan, SD3, or anything else where a plain even grid is good enough, this is still the node that starts the chain, and it's simpler to reason about than the newer object-aware Smart Tile system.
What it does. You give it an image, plus tile_width and tile_height (both default to 1024px). It slices the image into equal-size tiles and hands back everything downstream needs to process those tiles and put them back together correctly: IMAGES (the batch of tiles), POSITIONS (where each tile came from), ORIGINAL_SIZE, and GRID_SIZE. Nothing here is object-aware - it's a pure grid cut, which is exactly the point. You run each tile through your upscaler or img2img sampler independently (as a batch), then feed the results and the three bookkeeping outputs into TTP_Image_Assy to reassemble a seamless final image.
The two inputs that actually matter are tile_width and tile_height. Bigger tiles mean fewer of them (less seam-blending work, but more VRAM per tile); smaller tiles mean the opposite. If you'd rather think in terms of "split the image into N columns by M rows" instead of raw pixel dimensions, use the companion node TTP_Tile_image_size first - it takes width_factor/height_factor and computes tile_width/tile_height for you, which you then wire into this node.
Why you'd reach for it at all. This is the mechanism behind the classic "tiled diffusion + ControlNet Tile" upscale recipe the community has been running for years: cut into overlapping-ish tiles, run each through a sampler with a Tile ControlNet holding it faithful to the source, stitch back together. It's still one of the most reliable ways to get arbitrary output resolution on limited VRAM, because you're never holding the full-resolution image in the sampler at once - only one tile at a time.
Install. ComfyUI Manager, search "Comfyui_TTP_Toolset", or cd ComfyUI/custom_nodes && git clone https://github.com/TTPlanetPig/Comfyui_TTP_Toolset and restart. This particular node is pure image slicing - no model downloads, no extra Python dependencies to worry about.
Common issues. The one thing worth internalizing up front: this node on its own doesn't add any detail-preserving guidance. If you sample each tile independently without something tying it back to the source (a ControlNet Tile model at reasonable strength, or at least a low denoise strength on img2img), tiles can drift from each other and you get visible patchwork seams when you reassemble - this is exactly the classic mistake the wider upscaling community warns about with any tiled-diffusion workflow, TTP's or otherwise. Pair this node with TTPlanet_Tile_Preprocessor_Simple (also in this pack) feeding a Tile ControlNet if you want the tiles to actually cohere.
Also worth knowing: tile_width/tile_height don't have to evenly divide your image dimensions - the node records the true grid size and positions either way - but if you're chasing a specific final resolution, doing the division yourself with TTP_Tile_image_size first is the more predictable path. And remember that whatever grid you use here has to be fed back into TTP_Image_Assy with matching positions, original_size, and grid_size - those three outputs exist specifically so the reassembly node doesn't have to guess.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| tile_width | INT | 1024 | — |
| tile_height | INT | 1024 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| IMAGES | IMAGE | — |
| POSITIONS | LIST | — |
| ORIGINAL_SIZE | TUPLE | — |
| GRID_SIZE | TUPLE | — |