Nodes/ComfyUI_Eclipse/Add Watermark Image
ComfyUI Node

Add Watermark Image

Stamp a logo or signature on every image without leaving ComfyUI

By r-vageΒ·Created 10 months agoΒ·Updated a day agoΒ· 31
Add Watermark Image
  • original_image
  • Watermark_image
  • mask
  • image
β—„Zoom_modeβ–Ύβ–Ί
β—„Scaling_methodβ–Ύβ–Ί
β—„Scaling_factor1.0β–Ί
β—„Scale_width512β–Ί
β—„Scale_height512β–Ί
β—„initial_positionβ–Ύβ–Ί
β—„X_direction0β–Ί
β—„Y_direction0β–Ί
β—„rotate0β–Ί
β—„transparency0β–Ί

Add Watermark Image overlays a logo, signature, or text badge onto another image, with real control over size, position, rotation, and opacity. If you post batches of gens anywhere, this is the node that saves you from opening GIMP forty times to paste your handle onto each one. It runs on pure PIL on the CPU, so it's instant and costs you zero VRAM - it slots into the post-processing layer, the deterministic stuff you do after sampling rather than burning another diffusion pass.

How it works

It takes your original_image and your Watermark_image, converts the watermark to RGBA, optionally knocks out parts with a mask, rotates it, applies transparency, and composites it at an anchor point plus your chosen offset. All classic image compositing, none of it AI.

The inputs that matter for a beginner:

  • original_image and Watermark_image - the base and the overlay. Both are IMAGE sockets, so your logo can come from a Load Image node or even be generated.
  • Zoom_mode - the combo that decides how the watermark gets sized: None (keep its natural size), Fit (scale to fit the original, keeping aspect), zoom (scale by Scaling_factor), or Scale_according_to_input_width_and_height (use Scale_width/Scale_height directly).
  • initial_position - nine presets: Centered, Top, Bottom, Left, Right, and the four corners. X_direction and Y_direction then nudge it by pixels from that anchor (step 10).
  • rotate - any angle from βˆ’180 to 180. A 45Β° corner stamp looks way more deliberate than a horizontal one.
  • transparency - 0 means fully opaque, 100 means invisible. This is the one that trips people up on first use; the name suggests "how transparent" but the default of 0 gives you a solid stamp.
  • mask - optional. The mask is inverted and used as the alpha channel, so white regions of the mask knock out the watermark. Handy for clipping a logo so it doesn't run over a face or a busy area.

Output is a single image. Send it to a Preview or Save Images node and you're done.

A typical workflow

Load your batch, load your logo, drop this node between them with initial_position: Bottom Right, transparency: 20, rotate: -15, and let the batch flow through. Because it's CPU-only and per-image, a thousand frames cost you a few seconds, not a GPU allocation.

Installing it

It ships in ComfyUI_Eclipse, installed once for the whole pack:

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

then restart ComfyUI (or use Manager and search "ComfyUI Eclipse"). This node only needs Pillow, which ComfyUI already brings, so there are no extra deps to chase.

Gotchas

The migration one is pack-wide: ComfyUI_Eclipse was previously RvTools, and v4.0.0 removed all legacy nodes - run old workflows through the Workflow Migration Tool node (or python tools/migrate_workflow.py <workflow.json>) to rewrite old IDs with a backup. And remember: transparency of 100 erases the watermark entirely, so if your stamp "isn't showing," check that slider before you blame the node.

CategoryπŸŒ’ Eclipse/ Image/FX & Color

Inputs (13)

NameTypeDefaultDescription
original_imageIMAGEβ€”
Watermark_imageIMAGEβ€”
Zoom_modeCOMBO4 options: None, Fit, zoom, Scale_according_to_input_width_and_height
Scaling_methodCOMBO3 options: nearest-exact, bilinear, area
Scaling_factorFLOAT1.00.01–16β€”
Scale_widthINT5120–32768β€”
Scale_heightINT5120–32768β€”
initial_positionCOMBO9 options: Centered, Top, Bottom, Left, Right, Top Left, +3
X_directionINT0-48000–48000β€”
Y_directionINT0-48000–48000β€”
rotateINT0-180–180β€”
transparencyFLOAT00–100β€”
maskoptMASKβ€”

Outputs (1)

NameTypeDescription
imageIMAGEβ€”