Nodes/was-node-suite-comfyui/Image Stitch (Advanced)
ComfyUI Node Runs on cloud

Image Stitch (Advanced)

Glue two images together with a feathered seam

By WASasquatch·Created 3 years ago·Updated 2 days ago· 1,839
Image Stitch (Advanced)
  • image_a
  • image_b
  • image_c
  • image_d
  • image_e
  • image_f
  • image_g
  • image_h
  • image_i
  • image_j
  • image_k
  • image_l
  • image_m
  • image_n
  • image_o
  • image_p
  • image_q
  • image_r
  • image_s
  • image_t
  • image_u
  • image_v
  • image_w
  • image_x
  • image_y
  • image_z
  • IMAGE
stitch
feathering50

Sometimes you just want to put two images next to each other and get one image out. Image Stitch does that - the README calls it "stitch images together on different sides with optional feathering blending between them." Pick a side, and it welds the second image onto the first's top, bottom, left, or right, with an optional soft blend across the join so it doesn't look like two rectangles taped together.

What it's for

The honest answer is: comparisons and layouts. Before/after pairs. Side-by-side variations of the same prompt. A cheap two-panel or four-panel (chain a few together). Building a wide reference sheet. It also shows up as a plumbing step in bigger workflows - stitching a generated region back next to its source, or assembling tiles. It's not a panorama-stitcher in the computer-vision sense (no feature matching, no perspective warp); it's a straightforward "place image B on side X of image A."

How it works

Two image inputs, a side to attach the second one (top / bottom / left / right), and a feathering amount that controls how softly the two blend where they meet. Feathering at zero gives you a hard edge - a crisp panel border. Turn it up and the seam fades, which is what you want when the two images share content and you're trying to hide the join. The output is the combined image.

That's the whole node. Its simplicity is the appeal.

Watch the dimensions

The catch is the same one that bites every stitch-style node: the two images should match on the axis they're joined along. Stitching left-to-right, they need the same height; top-to-bottom, the same width. Mismatch and you'll get padding, stretching, or an error depending on the sizes. Send the odd one out through Image Resize first so the shared edge lines up. If your stitched result has a weird gap or a squished panel, that's the dimension mismatch talking.

One more note worth knowing: modern ComfyUI core (and several other packs) now ship their own image-stitch/concat nodes, so if you already have one you like, there's no need to pull in all of WAS just for this. But if WAS is already in your graph - and it often is - this does the job fine.

Installing it

Image Stitch rides along with WAS Node Suite. Install the pack through ComfyUI Manager (search was-node-suite-comfyui, install, restart) or clone it:

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

install requirements.txt, restart. No model downloads for this one.

If it won't load

The pack's been in maintenance-only mode since late 2023. The standard headache is the whole suite failing to import after a ComfyUI update - a dependency clash, opencv most often, because WAS holds some older pins. Reinstall the requirements into the right venv (activate it, or use install.bat) and it's back. Nothing about this node itself is fragile; the friction is always the pack-wide dependency reconcile.

CategoryWAS Suite/Image/Transform

Inputs (28)

NameTypeDefaultDescription
image_aIMAGEThe image that stays in place, and the one whose other dimension sets the canvas size.
image_bIMAGEThe image placed against image_a.
stitchCOMBOWhich side of image_a image_b goes on. `left` and `right` build a wide canvas, `top` and `bottom` a tall one.
featheringINT500–2048Width of the blended overlap in pixels. 0 butts the images together with a hard edge; 50 fades them over 50 pixels, which hides the seam between two views of the same scene. The seam is cut out of the pair, so a feather wider than a slot narrows the result, and stitching many slots that way narrows it further.
image_coptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_doptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_eoptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_foptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_goptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_hoptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_ioptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_joptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_koptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_loptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_moptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_noptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_ooptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_poptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_qoptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_roptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_soptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_toptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_uoptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_voptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_woptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_xoptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_yoptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.
image_zoptIMAGEA further image, stitched on after the one before it in the same direction. The interface reveals the next slot as this one is filled.

Outputs (1)

NameTypeDescription
IMAGEIMAGEOne image holding both inputs, blended across the join.