Nodes/LF Nodes/Vignette
ComfyUI Node

Vignette

A fast, tweakable dark-edge filter that won't fight the GPU

By lucafoscili·Created 2 years ago·Updated 2 years ago· 50
Vignette
  • image
  • ui_widget
  • image
  • image_list
intensity0.50
radius0.75
shapeelliptical
color000000

Vignettes are the oldest trick in the photo book: darken the corners, and suddenly the center of the image looks punchier and more intentional. LF_Vignette is the ComfyUI-native version, and unlike doing it in an external editor, you can drop it into the middle of a workflow and tune it per run - or run a whole batch through it without touching an image program once.

The mechanism is classic image processing, done on the CPU in numpy/Pillow rather than the GPU. It builds a distance map from the image center - elliptical by default, which corrects for aspect ratio so wide images don't get weirdly dark sides - then creates a gradient mask from your radius outward and multiplies the image toward a target color. Gaussian blur on the mask keeps the transition soft instead of a hard ring.

The inputs that matter:

  • intensity (0–1, default 0.5) - how dark the edges get. Higher = darker.
  • radius (0–1, default 0.75) - how far from the center the darkening starts. Lower = the vignette hugs the middle.
  • shape - elliptical (default) or circular.
  • color - the hex tint the edges fade toward, default 000000 (black).

The output is the filtered image as both image and image_list, so it slots into single-image or batched pipelines equally well. It's not an output node, so chain it anywhere - into a save, an upscaler, a face detailer pass.

Where you'd actually use this: portrait shots that need the background pushed back, product-style renders that want the subject to pop, or just adding a cinematic feel before a final upscale. The KUL_COMPARE widget shows before/after so you can see what you're doing as you slide intensity - which is the one control that reads backwards the first time (0.5 is already noticeably dark, so start low).

Installing LF Nodes - same pack, same steps:

  • ComfyUI Manager → search "LF Nodes" → install → restart, or
  • cd ComfyUI/custom_nodes && git clone https://github.com/lucafoscili/comfyui-lf then restart.

The usual LF caveats apply: the repo is in legacy mode (frozen, migrated to lucafoscili/lf-nodes) and this node carries over unchanged. It needs no models. The one real gotcha is that the filter's a frontend-driven process - the node pushes results to its compare widget via a websocket event, so if the Ketchup Lite UI didn't load you'll still get the filtered image on the output but no before/after view. Output's the source of truth; treat the widget as gravy.

Category✨ LF Nodes/Filters

Inputs (6)

NameTypeDefaultDescription
imageIMAGEInput image tensor or a list of image tensors.
intensityFLOAT0.500–1Controls the darkness of the vignette effect. Higher values mean darker edges.
radiusFLOAT0.750–1Controls the size of the vignette effect. Lower values mean a smaller vignette.
shapeCOMBOellipticalSelects the shape of the vignette effect.
colorSTRING000000Color to use for padding if 'pad' mode is selected (hexadecimal).
ui_widgetoptKUL_COMPARE[object Object]

Outputs (2)

NameTypeDescription
imageIMAGE
image_listIMAGE