Bounded Image Blend
Paste a processed crop back without a visible seam
- target
- target_bounds
- source
- IMAGE
Crop a region out, process just that piece at higher detail, paste it back at the original spot - that's one of the oldest, most effective tricks in this whole ecosystem for getting more detail into a small area (a face, a hand, a busy patch of texture) without re-rendering the entire image. WAS built its own version of that pipeline years before it became a standard pattern, and Bounded Image Blend is the "paste it back" step at the end of it. Per the README's own wording, it's there to "blend bounds image" - take a processed crop and blend it into the original at the location it came from.
It's not a standalone node, though - it's the last stage of a small family: Image Bounds defines a region on an image, Inset Image Bounds lets you pad or shrink that region, you run whatever processing you actually wanted (an upscaler, a detail pass, a face restore) on the cropped-out piece, and then Bounded Image Blend stitches the result back into the original image at that same location. There's a sibling, Bounded Image Blend with Mask, that does the same job but respects a mask for the blend region instead of blending the whole rectangle - reach for that one instead if your processed crop has an irregular edge you don't want blended as a hard rectangle.
Inputs are what that pipeline implies: the original image, the processed crop, and the bounds data that ties the two together (produced upstream by Image Bounds or Inset Image Bounds) so the node knows exactly where in the original the crop belongs. The output is the full image with that region blended back in, edges softened enough that the seam shouldn't be obvious.
One thing worth flagging so you don't grab the wrong tool: WAS's own README explicitly notes it ships more than one paste-back algorithm - Image Paste Crop exists as a separate node using "a different blending algorithm then Image Paste Face Crop, which may be desired in certain instances." That's a real, documented signal that these aren't interchangeable, and Bounded Image Blend is its own third option in that family, not a duplicate. If one gives you a visible seam, it's worth trying a different one from the set rather than assuming the whole approach doesn't work.
Installing it: ComfyUI Manager, search "WAS Node Suite," install, restart - the easy route. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/WASasquatch/was-node-suite-comfyui, then pip install -r requirements.txt (portable: python_embeded\python.exe -s -m pip install -r requirements.txt; manual/venv: activate the venv first), restart ComfyUI. Pure image-processing node, no model or special dependency of its own.
Where it bites: the most common frustration isn't a crash, it's forgetting that this node needs its matching bounds data - plug in an image without the bounds info from Image Bounds/Inset Image Bounds upstream and it has nothing to tell it where the crop actually belongs. Beyond that, the standing caveat for this whole pack: WAS Node Suite has been unmaintained since December 2023 ("Retired" is right there in the README title), and the community's recurring complaint is the suite failing to import after a ComfyUI update, not individual image nodes misbehaving. Check your console for a whole-suite import error before troubleshooting this node in isolation.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| target | IMAGE | The image being pasted into. The result is this image's size. One target per source image pairs them up; any other count blends every source into the first target. | |
| target_bounds | IMAGE_BOUNDS | Where in the target the source lands, normally the same bounds the region was cropped with. One row per source image pairs them up; any other count uses the first row for all of them. | |
| source | IMAGE | The image pasted in, stretched to the size of the bounds whatever its own size. The batch length here sets how many results come out. | |
| blend_factor | FLOAT | 1.000–1 | How opaque the pasted region is. 1.0 replaces the target inside the bounds, 0.0 leaves the target untouched, 0.5 mixes the two evenly. |
| feathering | INT | 160–18446744073709550000 | Width of the fade around the pasted region, in pixels. 0 pastes a hard rectangle; 16 softens the join. It has to stay under half the width and half the height of the bounds, or there is nothing left to fade and the node raises an error. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | One image per source, each being the target with that source blended into the bounded region. |