Image Brightness/Contrast/Saturation/RGB
A color-grading node with per-channel RGB gain most packs skip
- image
- IMAGE
Image Brightness/Contrast/Saturation/RGB is the pack's one real image-adjustment node, and its name is a full spec: brightness, contrast, saturation, and per-channel red/green/blue gain, all on one node. Most utility packs stop at brightness and contrast; the RGB gains are what make this one worth a look if you do any color grading before or after generation.
You'd use it for the mundane but important stuff: fixing a render that came out too dark, warming up a cool-skewed image by nudging red and blue gain independently, or pushing saturation on a preview before you commit to a full run. Because it works in pixel space on the decoded IMAGE, it slots in anywhere - after the VAE decode, before the SaveImage, or as a preprocessing step feeding an img2img pass.
Inputs
All FLOAT, all 0–2.0 with 1.0 as neutral:
brightness- overall lighten/darken.contrast- stretch or compress tonal range.saturation- color intensity (0 = grayscale).red_gain,green_gain,blue_gain- independent channel multipliers. This is the differentiator: pushred_gainto 1.1 andblue_gainto 0.9 and you've got a warm tint without touching a curve node.
Output is the adjusted IMAGE.
How it works
Under the hood it converts each frame to a PIL image and applies ImageEnhance.Brightness, Contrast, and Color in that order, then multiplies the RGB channels by the gains and clips back to 0–1. Order matters if you're being deliberate: gains apply after the enhance steps, so the per-channel multipliers act on the already-adjusted pixels.
Where it's weak
It loops over the batch in Python and does the work on the CPU via PIL/NumPy, so it's not a GPU tensor op. For a single image it's instant. For a 64-frame batch at high resolution, it's noticeably slower than a batched tensor implementation - keep that in mind if you're grading video frames. It's also easy to blow out channels: at gains near 2.0 you're clipping, so the node compensates by clamping rather than rolling off. That's on you to dial back.
Installation
Part of Praveen's ComfyUI Tools. Install via ComfyUI Manager (search "Praveen" / "praveen-tools"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Praveenhalder/praveen-tools
Restart ComfyUI. No extra dependencies and no model downloads - Pillow, NumPy, and PyTorch are all stock ComfyUI. For per-image color tweaks, this is a perfectly good node; the RGB gain sliders are the reason to prefer it over a generic brightness node.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| brightness | FLOAT | 1.000–2 | — |
| contrast | FLOAT | 1.000–2 | — |
| saturation | FLOAT | 1.000–2 | — |
| red_gain | FLOAT | 1.000–2 | — |
| green_gain | FLOAT | 1.000–2 | — |
| blue_gain | FLOAT | 1.000–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |