Nodes/ComfyUI_Eclipse/Image with FX
ComfyUI Node

Image with FX

Watermark and logo compositing with glow, shadow, and one infuriating toggle

By r-vage·Created 10 months ago·Updated a day ago· 31
Image with FX
  • background_image
  • input_image
  • mask
  • image
  • mask
invert_masktrue
image_scale25
opacity100
positionbottom_right
margin_x20
margin_y10
enable_glowfalse
glow_intensity5
glow_range25
glow_blur15
glow_inner_color#2ec0ff
glow_outer_color#006eff
enable_shadowfalse
shadow_offset_x5
shadow_offset_y5
shadow_grow6
shadow_blur18
shadow_color#000000
shadow_opacity50

This is the node you reach for when your output is done and you want to slap a logo, signature, or watermark on it - with the option to make it look deliberate instead of pasted on. Image with FX composites one image onto another using a mask (or the image's own alpha) as the shape, then optionally dresses it up with an outer glow and a drop shadow. It's the kind of post-processing nobody thinks to search for until they need to brand 200 batch outputs at once.

How the compositing works

You give it a background_image and an input_image (logo, signature, whatever), and the node figures out the shape of the input from either the mask you connect or the image's alpha channel if you don't. That shape drives the whole composite: it's what gets pasted, what gets the glow, and what casts the shadow. The source resizes to image_scale percent of the background (100% = fits entirely inside it; lower values are your watermark territory), then anchors it at position - default bottom_right - with margin_x/margin_y offsets, at opacity percent. Two outputs come out: the composited image and a mask, so you can chain further processing or save both.

The toggle that will trip you up

invert_mask defaults to True, and it's the first thing to suspect when your logo comes out looking like a hole punched in the background. The logic: many masks - especially white-on-black ones where the shape is white and the surroundings are black - are "inverted" relative to what the compositor expects, so the node flips them by default. If your logo renders as a cutout or a weird negative, flip invert_mask off and watch it fix itself in one rerun. The tooltip spells it out: enable it when the mask is white-on-black (transparent inside).

The FX inputs worth knowing

  • Glow: enable_glow turns it on. glow_intensity (default 5) is buildup iterations - more is denser; glow_range is max expansion in pixels; glow_blur is the blur radius per step; and glow_inner_color / glow_outer_color are hex colors, defaulting to a cyan→blue fade. If you want a neon look, start here.
  • Shadow: enable_shadow for the drop shadow behind the shape. shadow_offset_x/y position it, shadow_grow expands it beyond the outline, shadow_blur softens it, shadow_color (default #000000) and shadow_opacity (default 50) finish it.
  • Positioning: image_scale, opacity, position, margin_x, margin_y. That's the core of a simple watermark: scale ~10–20, opacity ~40–60, bottom right, small margins.

The author's own tip from the tooltips: if you don't have a separate background, connect the same image to both the background and input slots and the node handles it.

Install

It's part of ComfyUI_Eclipse, so one install gets you this and every other node in the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse

or install ComfyUI_Eclipse from ComfyUI Manager and restart. It runs on Pillow and numpy, both already in the pack's requirements, so there's usually nothing extra to install. Realistic use: wire the output into a Save Images or Preview node at the end of your workflow, and you've got an automatic watermark stage that runs every batch. It's fiddly to get the mask polarity right the first time, but once you've flipped invert_mask once, you'll never think about it again.

Category🌒 Eclipse/ Image/FX & Color

Inputs (22)

NameTypeDefaultDescription
background_imageIMAGEBackground image. The input image is composited onto this. Tip: connect the same image to both slots if you don't have a separate background.
input_imageIMAGEImage to composite (logo, signature, watermark).
invert_maskBOOLEANtrueInvert the mask so the opaque areas become the shape. Enable when the mask is white-on-black (transparent inside).
image_scaleINT251–500Scale percentage. 100%% = input fits entirely within the background. Use lower values for watermarks.
opacityINT1000–100Overall opacity of the composited image. 100 = fully visible, 0 = invisible.
positionCOMBObottom_rightAnchor position of the image on the canvas.
margin_xINT200–4000Horizontal margin from the anchor edge.
margin_yINT100–4000Vertical margin from the anchor edge.
enable_glowBOOLEANfalseEnable outer glow effect around the image.
glow_intensityINT52–20Glow buildup iterations (more = denser glow).
glow_rangeINT251–500Maximum glow expansion distance in pixels.
glow_blurINT150–500Blur radius applied to each glow step.
glow_inner_colorSTRING#2ec0ffGlow color near the image (inner, hex).
glow_outer_colorSTRING#006effGlow color at the edge (outer, hex).
enable_shadowBOOLEANfalseEnable drop shadow effect behind the image.
shadow_offset_xINT5-500–500Shadow horizontal offset in pixels.
shadow_offset_yINT5-500–500Shadow vertical offset in pixels.
shadow_growINT60–200Shadow expansion beyond image outline.
shadow_blurINT180–200Shadow blur radius.
shadow_colorSTRING#000000Shadow color (hex).
shadow_opacityINT500–100Shadow opacity percentage.
maskoptMASKShape mask for the input image. If omitted, the image alpha channel is used.

Outputs (2)

NameTypeDescription
imageIMAGE
maskMASK