Nodes/NN-custom-nodes/Image Adjust Color
ComfyUI Node

Image Adjust Color

RGB channel gains without the math

By bandifiu·Created about a month ago·Updated about a month ago· 0
Image Adjust Color
  • image
  • image
red0.00
green0.00
blue0.00

White balance is the most underrated post step in ComfyUI. A render comes back with skin tones that read too orange or shadows that lean green, and the fix isn't a new seed - it's a per-channel gain, which is exactly what NNImageAdjustColor (display name "Image Adjust Color") does. Three sliders, one output, done.

What it is

This is the dedicated RGB channel adjustment node in the bandifiu/ComfyUI-NN-custom-nodes pack. Where the pack's NNImageAdjust bundles brightness/contrast/saturation/channels into one panel, this one is stripped to exactly the job it's named for: adjusting the intensity of each color channel independently. If color balance is all you need, this is the smaller, less-cluttered tool.

How it works

The mechanism is about as simple as image math gets. Each channel is scaled by a gain factor of 1 + value:

  • red multiplies every red pixel by 1 + red
  • green multiplies every green pixel by 1 + green
  • blue multiplies every blue pixel by 1 + blue

So the three sliders, each ranging −0.5 to +0.5, behave like the channel-mixer controls in any photo editor. Set red to −0.1 and every red value drops 10%, which is the standard "this render is too warm" correction. Go positive on blue for a cool shift. The result is clamped to [0, 1], so highlights just clip instead of exploding.

There's a subtlety worth knowing: these are multiplicative gains, not additive offsets. That means the effect scales with pixel value - a −0.2 red reduces a midtone more than it does a near-black pixel, which is exactly what you want from a white-balance knob and different from the additive brightness behavior of the pack's contrast/brightness node. Don't confuse the two.

The inputs

Just four, and only three that do work:

  • image - the tensor you're correcting, batch-in, batch-out.
  • red / green / blue - the three channel gains, each −0.5 to +0.5, all defaulting to 0 (no change).

The single image output drops straight into a preview or the save chain. Because the node no-ops cleanly at zero, you can drop it into a workflow as a permanent tuning stage and it costs nothing until you move a slider.

When to use it

Reach for this when the problem is channel-specific: a white balance that's off, a cast from a color-grade LoRA, or matching the tint of one batch to another. For global lightness problems - "the whole image is dark" - this is the wrong tool; that's NNImageAdjustContrast's brightness, which is additive. And if you're trying to match the overall color statistics of one image to another, neither of these is the right node - that's reference-based matching (NNContrastAdjustRef in this same pack), which transfers mean and contrast from a second image rather than asking you to dial in channels by eye.

One workflow habit that pays off: convert the three sliders to inputs and wire them from a single control panel if you're tuning one correction across many branches. Otherwise this is a fire-and-forget node - set it, forget it, re-render.

Installing

Part of the bandifiu/ComfyUI-NN-custom-nodes pack, so one install covers it:

cd ComfyUI/custom_nodes
git clone https://github.com/bandifiu/ComfyUI-NN-custom-nodes

Restart ComfyUI afterward (or install via Manager by searching "NN-custom-nodes"). Dependencies are just torch/numpy/pillow - no models, no downloads. Remember the pack is GPL-3.0 and written against ComfyUI's newer V3 node API, so don't go looking for the old NODE_CLASS_MAPPINGS dict if you open the source.

The one thing that catches people: because the sliders are multiplicative around a 1.0 center, the values read like percentages. A 0.15 change is 15%, not "0.15 out of 255" - set your expectations accordingly and you'll land the correction on the first or second try instead of fighting the slider.

CategoryNN/image

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
redFLOAT0.00-0.5–0.5
greenFLOAT0.00-0.5–0.5
blueFLOAT0.00-0.5–0.5

Outputs (1)

NameTypeDescription
imageIMAGE