PD:Image Blend V1
Image Blend V1: a real layer-blend node hiding in a utility pack
- background_image
- layer_image
- layer_mask
- image
- mask
PD:Image Blend V1 (ImageBlendV1) is the pack's Photoshop-layer node: a background, a layer on top, a blend mode, opacity, position, scale, and an optional mask. If you've ever wanted to composite a texture, a glow, a logo, or a pattern onto an image the way you'd stack layers in an editor - without leaving ComfyUI - this is the node. The author describes it as a simplified fork of the heavier ImageBlendAdvanceV2, keeping the core blending and dropping the kitchen sink.
How it works
The layer image is positioned over the background by percentage (x_percent/y_percent, where 50/50 is center, and you can go negative or past 100 to push it off-canvas), scaled with scale (0.01–10), and composited with one of twelve blend_mode options: normal, multiply, screen, overlay, soft_light, hard_light, color_dodge, color_burn, darken, lighten, difference, exclusion. That's a solid Photoshop-style set - multiply for textures, screen for glows and light, overlay for contrast texture stamps. opacity (0–100) controls overall layer strength.
align_mode (default/top/bottom/left/right) snaps the layer to an edge instead of hand-positioning with percentages. The optional layer_mask restricts blending to a region, with invert_mask to flip it - the standard "white = keep" ComfyUI convention applies, so if your mask comes out inverted you flip the boolean instead of regenerating the mask.
Outputs are both image (the composite) and mask (the effective blend mask), which is a nice touch if you want to chain the mask onward or inspect exactly where the layer landed.
The inputs that matter
background_imageandlayer_image- the two stacks. Both required.blend_mode- the dropdown that decides multiply vs screen vs the rest. This is the creative control.opacity- the mix amount, 0–100.x_percent/y_percent- position. Remember these are percentages, not pixels; 50 = center.layer_mask+invert_mask(optional) - confine the blend to part of the frame.
Installing
One node in the 7BEII/Comfyui_PDuse pack. ComfyUI Manager → search "Comfyui_PDuse" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/7BEII/Comfyui_PDuse
cd Comfyui_PDuse
pip install -r requirements.txt
Restart, done. No models; dependencies are Pillow, numpy, opencv-python and friends, torch comes from ComfyUI.
Gotchas
Transparent PNGs are where people trip up. If your layer_image is a transparent asset (a PNG with alpha from a background-removal node, say), wire its mask into layer_mask - the node blends by mask, and an alpha channel alone won't drive it the way you expect. Also, x_percent/y_percent accepting negatives and values over 100 is intentional: it's how you do partial off-canvas placements. And since the node blends by percentage rather than canvas resolution, the same x_percent behaves identically at 512 and 2048 - which is the point, but it means pixel-precise placement is not this node's strength.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| background_image | IMAGE | — | |
| layer_image | IMAGE | — | |
| blend_mode | COMBO | 12 options: normal, multiply, screen, overlay, soft_light, hard_light, +6 | |
| opacity | INT | 1000–100 | — |
| x_percent | FLOAT | 50.00-999–999 | — |
| y_percent | FLOAT | 50.00-999–999 | — |
| scale | FLOAT | 1.000.01–10 | — |
| align_mode | COMBO | default | 5 options: default, top_align, bottom_align, left_align, right_align |
| layer_maskopt | MASK | — | |
| invert_maskopt | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |