Nodes/comfyui-lopi999-nodes/Hue Saturation Light Levels
ComfyUI Node

Hue Saturation Light Levels

Krita's color-correction trio, as one ComfyUI node

By LaVie024·Created about a year ago·Updated 8 months ago· 8
Hue Saturation Light Levels
  • image
  • mask
  • IMAGE
hue0
saturation0
light0
light_type

Hue, saturation, and light levels - the three dials of every photo editor - bundled into one ComfyUI node with a choice of what "light" even means. If your generation came out with a green cast, or oversaturated, or just a touch too bright, this is the single node that fixes all three without you hunting for three separate color nodes. It's the second half of this pack's Krita-inspired post-processing pair, alongside BurnImage.

Why you'd reach for it

Color grading after generation is half the battle of making a raw render look finished. This node's three inputs map to three honest operations: hue rotates the hue (a ±180° shift - push it +30 and every color rotates), saturation multiplies color intensity (0 = unchanged, positive = richer, negative = desaturated), and light brightens or darkens. The light_type dropdown is the interesting part: it decides what "light" operates on, and the three options are real, meaningful choices.

How it works

The implementation converts to HSV and adjusts. The light_type variants differ in how they define lightness:

  • value - uses the HSV V channel (max of RGB). Simple, fast, and what most people expect.
  • intensity - uses the mean of RGB, scaling the whole image by that ratio. A different feel on colors.
  • luma - uses the Rec.601 luma weighting (0.299 R + 0.587 G + 0.114 B), the closest to how brightness is actually perceived.

All three apply a multiplicative gain derived from your light value, then clamp to valid range. Hue and saturation are applied the same way regardless of light type. The optional mask restricts everything to a region, which is where this node earns its keep - color-grade just the sky, or just the character's hair, in one pass.

The inputs that matter

  • image (IMAGE) - the input.
  • hue (INT, -180 to 180, default 0) - hue rotation in degrees.
  • saturation (INT, -100 to 100, default 0) - saturation gain. Negative desaturates.
  • light (INT, -100 to 100, default 0) - lightness gain.
  • light_type (enum: value, intensity, luma) - what "light" means. Default is value; try luma for perceptually correct brightness tweaks.
  • mask (MASK, optional) - limit the adjustment region.
  • IMAGE - the color-corrected result.

Installing it

Same pack, same kornia caveat as BurnImage. The pack has no requirements.txt, so kornia needs installing for the image modules to load:

cd ComfyUI/custom_nodes
git clone https://github.com/LaVie024/comfyui-lopi999-nodes
pip install kornia

Then restart ComfyUI. ComfyUI Manager also finds it as "comfyui-lopi999-nodes."

Common issues

The light_type confusion is the classic gotcha - changing light values and seeing "wrong" brightness is usually a matter of which definition you picked; luma is the one that matches how the eye reads brightness. Also, saturation and light are multiplicative gains, so extreme values clip (the node clamps to 0-1 rather than rolling over). And remember the mask semantics mirror BurnImage: masked areas get adjusted, unmasked stay original. If the node won't appear at all, check kornia first.

Categorylopi999/image

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
hueINT0-180–180
saturationINT0-100–100
lightINT0-100–100
light_typeCOMBO3 options: value, intensity, luma
maskoptMASK

Outputs (1)

NameTypeDescription
IMAGEIMAGE