Nodes/ComfyPanel/ImageFilterAdjustments
ComfyUI Node

ImageFilterAdjustments

WAS's Simple Image Filter without the 200-node bloat

By Ginolazy·Created 6 months ago·Updated 2 days ago· 23
ImageFilterAdjustments
  • image
  • IMAGE
brightness1.00
contrast1.00
saturation1.00
sharpness1.00
blur0
gaussian_blur0.00
edge_enhance0.00
detail_enhancefalse

Somewhere out there is a workflow that installs all of WAS Node Suite - 200+ nodes and a dependency stack to match - just to run one brightness slider. This node is the answer to that. Image Filter Adjustments is a nine-knob photo-finishing box: brightness, contrast, saturation, sharpness, plus blur, gaussian blur, edge enhancement and a detail toggle, all in one node, all sitting at neutral so the image passes through untouched until you actually move something.

Its whole pitch is what it leaves out. It's a port of WAS's Simple Image Filter, but WAS drags in a pile of packages to support everything else in the suite, and over the years that stack has become the thing people hit first: import failures after ComfyUI updates, pip packages pinned backwards, the original author stepping back from maintenance. KMCDev's dependencies are numpy, Pillow and torch - the exact stack ComfyUI already runs on. No models, no downloads, no extras to break. If you only ever wanted the one filter from WAS, this is a genuinely cleaner way to get it.

How it works. The defaults are the neutral point: brightness 0, contrast 1, saturation 1, sharpness 1, and everything else at 0/false. The adjustments split into two camps under the hood. Brightness is additive - it adds its value to every pixel in 0–1 float space, so the −1..1 range runs from "crush to black" to "blow out." Contrast is a straight multiplication (pixel × contrast), which is the gotcha: it's not the S-curve contrast you get from a real contrast filter, it's a plain gain. Crank it to 1.5 and everything brightens toward clipping; drop below 1.0 and it just darkens. Saturation, sharpness and the blurs go through Pillow instead - ImageEnhance.Color, ImageEnhance.Sharpness, repeated BLUR passes, and a GaussianBlur radius. Edge enhance cross-fades between your image and Pillow's aggressive EDGE_ENHANCE_MORE filter by a flat amount, and detail enhance is a plain DETAIL toggle. It iterates the batch itself, so a multi-frame batch gets every frame treated identically.

The inputs you'll actually set:

  • brightness (−1..1, default 0) - additive lighten/darken.
  • contrast (−1..2, default 1) - plain multiply, no curve.
  • sharpness (−5..5, default 1) - sleeper here: values below 1 blur, so it doubles as a cheap soften.
  • gaussian_blur (0..1024) - radius in pixels; big radii get slow on large images.
  • detail_enhance - a false/true toggle for Pillow's DETAIL filter.

Output is a single IMAGE socket. Wire it into a Preview or Save Image node, or keep it mid-chain - a common pattern is running it between VAE decode and an upscale, or as a batch tone pass over a whole render. The PIL-based adjustments convert the image to a Pillow image and back, which is a CPU round-trip; fine for stills, and the reason it's not the first thing you'd reach for on a long video batch.

Install. The README is a single paragraph - it doesn't even document the install - so you use the standard route. ComfyUI Manager → search "KMCDev" → Install, then restart ComfyUI. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/kevinmcmahondev/comfyui-kmcdev-image-filter-adjustments

then restart ComfyUI. The pack is small and there's no requirements step that needs anything you don't already have.

Troubleshooting. The most common "it's broken" is actually "it's neutral": if a slider is sitting at its default (brightness 0, contrast 1), it does nothing by design. That's the point of the node. If you load a downloaded workflow that needs this pack and you don't have it, Manager will offer to install it. One honest warning: it's a fork of WAS behavior, so results track WAS's Simple Image Filter closely but not pixel-perfectly - the contrast implementation differs - so don't expect bit-identical output if you're swapping one for the other mid-workflow.

CategoryComfyPanel/Image or Mask

Inputs (9)

NameTypeDefaultDescription
imageIMAGE
brightnessFLOAT1.000–2
contrastFLOAT1.000–2
saturationFLOAT1.000–2
sharpnessFLOAT1.000–2
blurINT00–10
gaussian_blurFLOAT0.000–10
edge_enhanceFLOAT0.000–2
detail_enhanceBOOLEANfalse

Outputs (1)

NameTypeDescription
IMAGEIMAGE