ComfyUI Node

Blend Images

13 PIL blend modes in one node — screen, multiply, overlay, and friends

By Pirog17000·Created about a year ago·Updated 10 months ago· 3
Blend Images
  • image1
  • image2
  • IMAGE
blend_amount0.50
blend_mode

Sometimes a mask-based composite is overkill. You just want to lay one image over another and let Photoshop-style blend math do its thing - screen for light, multiply for shadows, overlay for contrast punch. Blend Images gives you thirteen PIL blend modes in a single dropdown, with a blend_amount opacity control on top. If you've ever wanted the look of a layer blend mode without leaving ComfyUI, this is the node.

How it works

It converts both images to PIL, applies the selected blend_mode with ImageChops, and converts back. The blend_amount semantics are worth reading carefully because they differ by mode:

  • normal - a straight alpha blend: blend_amount 0.5 is a 50/50 mix of image1 and image2. This is the one that behaves like an opacity slider between two images.
  • everything else (multiply, screen, overlay, soft_light, hard_light, color_dodge, color_burn, add, subtract, lighten, darken, difference) - the full blend result is computed, then blended between image1 and that result by blend_amount. So 0.0 = image1 untouched, 1.0 = full blend effect. Lower amounts give you the effect "at reduced strength" - the classic opacity-fade on a blend layer.

It auto-resizes image2 to match image1, handles batches by cycling the smaller one, and converts anything non-RGB along the way.

The inputs

  • image1 / image2 - the two images.
  • blend_amount (0–1, default 0.5) - opacity of the effect (or the mix ratio in normal mode).
  • blend_mode - one of: normal, add, subtract, multiply, screen, overlay, soft_light, hard_light, color_dodge, color_burn, lighten, darken, difference.

Output: IMAGE.

Where you'd reach for it

Grain and texture overlays (screen or soft_light), vignettes and light leaks, overlaying a "light" pass onto a base, or adding a color grade by multiply. It's the kind of finishing node that pairs with the pack's realism trio - stack DSLR noise, a bloom, and a screen-blended light pass and you've got a look. Because the mode list is literally PIL's, what you see is what Photoshop users expect: screen brightens, multiply darkens, overlay boosts contrast, difference inverts.

Installing it

Ships in Pirog's Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/Pirog17000/Pirogs-Nodes
pip install -r Pirogs-Nodes/requirements.txt

Or search "Pirog's Nodes" in ComfyUI Manager and restart. Needs Pillow, which ComfyUI already has.

Gotchas

Two honest notes. First, color_dodge and color_burn are approximations - the source implements them as plain add/subtract rather than true dodge/burn math, so don't expect full Photoshop fidelity from those two. Second, if the node ever throws, it silently returns image1 unchanged - so a result that looks like "nothing happened" might be a hidden error. And remember: the blend modes work pixel-by-pixel on overlapping images; there's no mask, no feathering. For positional control you want Image Blend by Mask instead.

Categorypirog/image

Inputs (4)

NameTypeDefaultDescription
image1IMAGEFirst image to blend
image2IMAGESecond image to blend
blend_amountFLOAT0.500–1Opacity control: 0.0 = original image, 1.0 = full blend effect. For normal mode: blends between image1/image2 directly.
blend_modeCOMBOBlend mode to use for combining the images

Outputs (1)

NameTypeDescription
IMAGEIMAGEBlended image result