Blend Images
13 PIL blend modes in one node — screen, multiply, overlay, and friends
- image1
- image2
- IMAGE
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_amount0.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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image1 | IMAGE | First image to blend | |
| image2 | IMAGE | Second image to blend | |
| blend_amount | FLOAT | 0.500–1 | Opacity control: 0.0 = original image, 1.0 = full blend effect. For normal mode: blends between image1/image2 directly. |
| blend_mode | COMBO | Blend mode to use for combining the images |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | Blended image result |