Composite a second image over a base with 15 blend modes, opacity, and an optional invertible/feathered mask.
Where: Flowgen → Add → Image & Vector → Adjust → Blend
Key ideas
- Blend is one graph step: Composite a second image over a base with 15 blend modes, opacity, and an optional invertible/feathered mask.
- Typed sockets: Inputs: Image / image_in — base/bottom image.; Blend with / blend_image_in — top image.; Mask / mask_in — optional region control.. Outputs: Image Output / image_out — the flattened composite.. Settings stay on the node rather than masquerading as extra wires.
- Card and Properties agree: The compact card and selected-node Properties sidebar expose the same persisted controls: Blend Mode: Normal, Multiply, Screen, Overlay, Darken, Lighten, Color Dodge, Color Burn, Hard Light, Soft Light, Difference, Exclusion, Saturation, Color, or Luminosity.; Opacity: 0–1.; Invert mask.; Mask feather: 0–50 px..
- Execution behavior: This browser-local pure operation previews automatically after a short pause while a control changes, then overwrites one durable result file after the value settles. Deselecting the card or starting a downstream flow flushes the pending save. A terminal error exposes Retry; there is no normal Run button.
- Cost and privacy boundary: It calls no generation provider and charges no Sparks/Flowies. Processing happens in the open browser, so it cannot execute in a headless/server-only flow and the source must be readable by the page.
- Blend card: PureOpNode uses the authored shared-card path. Composite an overlay over a base image with blend and mask controls.
- Properties sidebar: Card-owned operation controls; common properties shell
- Opened surfaces: Live image preview
Steps
- Connect the base image to Image.
- Connect the overlay/treatment image to Blend with.
- Pick a blend mode and set Opacity.
- Optionally connect a mask, then tune Invert mask and Mask feather.
- Inspect alignment when the sources have different proportions.
- Connect the flattened Image Output.
Inputs
- Image / image_in — base/bottom image.
- Blend with / blend_image_in — top image.
- Mask / mask_in — optional region control.
Outputs
- Image Output / image_out — the flattened composite.
Controls
- Blend Mode: Normal, Multiply, Screen, Overlay, Darken, Lighten, Color Dodge, Color Burn, Hard Light, Soft Light, Difference, Exclusion, Saturation, Color, or Luminosity.
- Opacity: 0–1.
- Invert mask.
- Mask feather: 0–50 px.
Important behavior
- The second image is sized to the base canvas and may stretch when proportions differ.
- Without a mask the mode applies to the whole frame.
- With a mask, white reveals the blend; Invert Mask swaps the region and feather softens its edge.
MCP authoring
- Create with create_node { type: "imageBlend" }.
- Connect exact handles with connect_nodes when the node has more than one input or output.
- Use set_props with the complete opParams bag and let the open Flowgen client preview/save it; there is no normal run_node step.
Blend controls and presets
- Add path: Flowgen → Add → Image & Vector → Adjust → Blend.
- Card: PureOpNode.
- Properties: Card-owned operation controls; common properties shell.
- Controls: Blend mode; Opacity; Invert mask; Mask feather.
- Opened surfaces: Live image preview.
Tips
- Test the operation on one representative asset before placing it inside a List iteration.
- Keep the untouched source upstream so the operation can be changed or bypassed later.
- Judge edges and color at the intended delivery size as well as at full preview size.
Limitations and important notes
- The top image stretches to the base canvas; there is no fit/crop/position control on this focused node.
- The result is flattened; keep both inputs for future changes.
Troubleshooting
The blend affects the wrong side of the mask
Toggle Invert mask. White applies the blend by default; black applies it when inverted.
FAQ
Does this open the full Image Editor?
No. This is a focused Flowgen node. Use Image Editor when you need layers, selections, paint, paths, or several edits in one document.
Can I use it in a List iteration?
Yes. Wire the current row field into the typed input, collect the exact output handle, and test one row before scaling the run.