Nodes/was-node-suite-comfyui/Image Tile Extract (Quadrants)
ComfyUI Node Runs on cloud

Image Tile Extract (Quadrants)

Cut a frame into four, on four wires

By WASasquatch·Created 4 years ago·Updated a day ago· 1,864
Image Tile Extract (Quadrants)
  • images
  • top_left
  • top_right
  • bottom_left
  • bottom_right
◄border_width0►
◄border_color#FFFFFF►

Some jobs just need the picture in pieces. Re-rendering a 4K frame with a model that only works at 1K. Checking one corner of an image without zooming the whole canvas. Producing a four-up comparison from a single source. All of those start with the same boring step, and this node is that step, done in one go instead of four crops.

Feed it images and you get four outputs: top_left, top_right, bottom_left, bottom_right. Cut at the middle, in both axes, no resampling.

What's worth knowing

It's batch-safe in the way you'd want: every frame of a batch is split the same way, so each output carries one quadrant of every frame, in order. A four-frame sequence goes in and four top_left frames come out. Align the four outputs back into a grid and you have the sequence again, quartered.

border_width (0 to 100 pixels) draws a border around each quadrant in border_color, and the interesting part is the implementation detail: the quadrant is shrunk to fit inside the border, so the output tile stays exactly the input's size. That means border 0 leaves the quadrant at its own resolution with no resampling at all - a lossless cut - while a border above 0 buys you a visible frame at the cost of one resample of every tile. If you're doing an upscale pass, stay at 0.

border_color is a hex string like #FFFFFF, the leading # is optional, and an unreadable value falls back to white rather than failing. Ignored entirely when border_width is 0.

Four outputs, four wires, all IMAGE. Feed them to four samplers, four upscalers, four Save Image nodes - whatever the job is.

The workflow this is actually for

Tiled upscaling, done by hand. A 4K frame becomes four 2K quadrants, each one goes through your upscaler at a comfortable resolution, and the results get pasted back into a grid. The reason people do it manually instead of using a tiled upscale node is control: you can choose a different denoise, a different prompt, or a different seed per quadrant, and redo just the one that came out wrong.

The cost is the seams. Whatever you re-render, the quadrant edges are still a hard boundary, and any per-tile difference in colour, exposure or detail shows up as a cross through the middle of the image. The standard mitigations apply: overlap your crops slightly and feather, or colour-match each tile to the original before pasting. If you just want the image bigger and you don't need per-tile control, a tiled upscale node is less work and won't produce a seam, because it never cut the picture in the first place.

The other honest use is comparison work - four variations laid out in a quad, one Save Image node, done. That's a legitimately better workflow than four Preview nodes and a screenshot.

Installing it

It ships in WAS Node Suite v3 - MIT, 468 nodes, by WASasquatch:

cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git

ComfyUI Manager, search WAS Node Suite v3, is the recommended install. ComfyUI 0.14.0+ and Python 3.10+. Nothing gets pip-installed, nothing gets downloaded, and the pack never runs pip on its own - all of which is a change from v2, whose twenty installed packages are the source of every "Cannot import … was-node-suite-comfyui module" thread you'll find while googling. First start after installing writes config.yaml and the pack's folders under <ComfyUI user dir>/was-node-suite/, which is why that first launch takes a beat longer. Tiling nodes sit in the extras feature group, on by default.

If you need more than four pieces, don't hand-roll it - the pack also has a grid-based tile extractor (Image Tile Extract (Grid)) for finer splits, and Image Tile Shuffle for putting tiles back down in a different order.

CategoryWAS Suite/Image/Transform

Inputs (3)

NameTypeDefaultDescription
imagesIMAGEThe pictures to split. Every frame of a batch is split the same way, so each output carries one quadrant of every frame.
border_widthINT00–100Border in pixels drawn around each quadrant, in border_color. The quadrant is shrunk to fit inside it, so the output tile stays the same size. 0 leaves the quadrant at its own resolution with no resampling at all.
border_colorSTRING#FFFFFFColour of the border, as a hex string such as #FFFFFF for white or #000000 for black. The leading # is optional, and an unreadable value falls back to white. Ignored when border_width is 0.

Outputs (4)

NameTypeDescription
top_leftIMAGEThe upper-left quarter of each picture.
top_rightIMAGEThe upper-right quarter of each picture.
bottom_leftIMAGEThe lower-left quarter of each picture.
bottom_rightIMAGEThe lower-right quarter of each picture.