ComfyUI Node

Blend Image

GIMP-style blending, anchors, and opacity in a single ComfyUI node

By thalismind·Created about a year ago·Updated about a year ago· 2
Blend Image
  • base_image
  • overlay_image
  • IMAGE
blend_modesoft_light
opacity1.00
positionbottom_right

Every AI image pipeline ends the same way: with a compositing step nobody planned for. You want to slap a watermark on a batch of renders, drop a logo in the corner, or lay a texture over an image without it looking pasted on. That's exactly what Blend Image (BlendImageNode) from ComfyUI Blend Image Nodes does. It takes two images, mixes them with any of fourteen GIMP/Photoshop-style blend modes, and hands back a single composite - no masks, no math nodes, no faff.

Core ComfyUI already ships a plain Image Blend node, but it assumes same-size images and mostly lerps between them. The whole point of this one is that it packs three things into one box: a real blend-mode library, a nine-position anchor for the overlay, and an opacity slider. It's the kind of utility you won't build a workflow around but end up reaching for constantly once it's installed.

How it works

Under the hood it's the blend-modes Python package doing the heavy lifting - the same per-channel math GIMP has had for thirty years, so nothing fancy or AI-shaped. The node takes your overlay, pads it out to the full size of the base image using constant-value padding anchored at whichever position you picked, converts both to RGBA, runs them through the chosen mode, and converts back to a ComfyUI image tensor. If you feed it a batch of base frames - say, from a video frame loader - it loops over every frame with the same overlay and shows a progress bar, which is how the pack gets away with advertising "video support" from a single node.

There's no magic and no GPU footprint to speak of; this is CPU numpy work on already-generated pixels.

The inputs that matter

  • base_image and overlay_image - the background and the thing you're putting on top. A beginner will fight these less than they think: the overlay has to be smaller than or equal to the base in both dimensions, because the node pads rather than scales. Resize it first or you'll get a hard error.
  • blend_mode - fourteen choices, defaulting to soft_light. multiply darkens and keeps shadows (great for textures), screen and dodge brighten, overlay and hard_light punch up contrast, difference inverts where they clash. grain_extract / grain_merge are fun for texture work. If you're just putting a watermark on, normal is the one.
  • opacity - 0 to 1, default 1. This is your transparency control for the overlay; at 0.4 a normal blend is a gentle fade, which is how watermarks stay legible instead of stamped.
  • position - nine anchors from top_left to bottom_right, defaulting to bottom_right. It's where the watermark goes, basically.

The single output is an IMAGE tensor, so it wires straight into anything downstream: a Save Image, an upscaler, a VAE decode, another blend.

Installing it

It's a one-liner either way. In ComfyUI Manager, search "ComfyUI Blend Image Nodes" and hit install. Or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/thalismind/ComfyUI-Blend-Nodes

Then restart ComfyUI. Dependencies are just pillow and blend-modes - no model files to download, nothing that's going to fight your existing environment. The author is a Civitai/Reddit workflow poster (the same thalismind behind the "4k backgrounds with Flux and SwinIR" writeup), and the pack is AGPL-3.0 licensed, so read that license before you ship it inside something commercial.

Where people get burned

The size constraint is the #1 gotcha - an overlay bigger than the base throws ValueError: Overlay image must be smaller than or equal to base image dimensions. There's no scale input, so budget a Resize node in front of it. And because positioning is anchor-only, you can't nudge the overlay by a few pixels; if you need pixel-perfect placement you'll be back to building a mask-based composite yourself.

One more honest note: opacity here applies to the whole overlay uniformly. If you want a gradient-faded watermark that's strong at the bottom and invisible at the top, this node won't do it on its own - you'll want to mask the overlay first. For everything else, it's the rare utility node that does exactly one thing, and does it without a tutorial.

Categoryimage

Inputs (5)

NameTypeDefaultDescription
base_imageIMAGEThe base image to blend.
overlay_imageIMAGEThe overlay image.
blend_modeCOMBOsoft_light14 options: soft_light, lighten_only, dodge, addition, darken_only, multiply, +8
opacityFLOAT1.000–1
positionCOMBObottom_rightAnchor point for placing the overlay.

Outputs (1)

NameTypeDescription
IMAGEIMAGE