ImageFilterAdjustments
WAS's Simple Image Filter without the 200-node bloat
- image
- IMAGE
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.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| brightness | FLOAT | 1.000–2 | — |
| contrast | FLOAT | 1.000–2 | — |
| saturation | FLOAT | 1.000–2 | — |
| sharpness | FLOAT | 1.000–2 | — |
| blur | INT | 00–10 | — |
| gaussian_blur | FLOAT | 0.000–10 | — |
| edge_enhance | FLOAT | 0.000–2 | — |
| detail_enhance | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |