Nodes/ComfyUI-Purz/Color Adjust (Purz)
ComfyUI Node

Color Adjust (Purz)

The brightness/contrast/saturation trio, done

By purzbeats·Created about a year ago·Updated 3 months ago· 24
Color Adjust (Purz)
  • image
  • image
brightness1.00
contrast1.00
saturation1.00

Every image pipeline ends with the same three knobs: brightness, contrast, saturation. PurzColorAdjust is the node that packages exactly those three, no more, no less. Feed it an IMAGE, adjust one or all three sliders, and out comes the corrected IMAGE. It's the "get your look right before you save" node - the sort of thing you drop at the end of a generation workflow when the model produced something a touch too dark, a bit flat, or slightly oversaturated.

It's part of ComfyUI-Purz, the utility pack by PurzBeats (a Comfy Org staffer). If you've got the whole pack, this is the lightweight everyday cousin of the much bigger Interactive Filter - three sliders instead of 120+ effects.

How it works

Under the hood it uses Pillow's ImageEnhance module: brightness, contrast, and color (saturation) enhancers applied in sequence, in that order. The neat implementation detail is that it skips each stage entirely when the value is exactly 1.0 - so if you only touch contrast, it doesn't waste time converting through the brightness or saturation paths. It loops over the whole batch, which makes it perfectly usable for adjusting every frame of a video sequence in one pass.

The inputs that matter

  • image - the IMAGE tensor to adjust.
  • brightness - 0 to 3, default 1. 1 is neutral; below 1 darkens, above 1 brightens. 0 makes it black, 2 is quite blown.
  • contrast - 0 to 3, default 1. Below 1 flattens toward gray, above 1 pushes toward hard edges. 0 makes a solid mid-gray; this is your "give it punch" slider.
  • saturation - 0 to 3, default 1. 0 is full grayscale, 1 is natural, 2+ is that punchy saturated look. Drag it to 0 and you have a B&W conversion - though the pack's dedicated B&W node uses a proper luminance formula, which looks better.

Output is image, same IMAGE type and dimensions, so it slots in at the end of any chain.

Installing it

ComfyUI Manager - search ComfyUI-Purz - or:

cd ComfyUI/custom_nodes/
git clone https://github.com/purzbeats/ComfyUI-Purz.git
cd ComfyUI-Purz
pip install -r requirements.txt

Restart ComfyUI and you're set. Requirements are OpenCV, Pillow, torch, numpy - all things ComfyUI ships with, so there's nothing heavy to install and no models to download. On a modern ComfyUI you get slider widgets for all three values, which makes live-tuning painless.

Where people get burned

Order of operations. Brightness, contrast, and saturation don't commute - pulling saturation down before fixing brightness gives a different result than the reverse, so get your exposure right first, then push contrast, then saturation last. Also, values are multiplicative with 1 as neutral, not additive - someone expecting "brightness +50" will find 1.5 instead. It's a tiny mental shift, but once you're used to 1-as-neutral, it's actually more predictable than additive knobs for batch work.

CategoryPurz/Image/Color

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
brightnessFLOAT1.000–3
contrastFLOAT1.000–3
saturationFLOAT1.000–3

Outputs (1)

NameTypeDescription
imageIMAGE