RC Hue/Saturation
Fix one color without dragging a mask
- image
- IMAGE
Every image generator has a color problem. Skin tones drift orange, skies come out green, product photos have a red cast that no white-balance slider fixes. You could mask those regions by hand and adjust them separately - or you could use a targeted hue/saturation node that only touches the color range you point at. RC_HueSaturation is that node, a faithful Photoshop-style implementation from the RC Image Compositor pack, and it's the single most-used adjustment in the suite for a reason.
How it works
It converts the image to HSL space, shifts the hue by degrees, adjusts saturation and lightness, then converts back - but the killer feature is target_color. You pick a range - master, reds, yellows, greens, cyans, blues, or magentas - and the adjustment applies only to pixels in that hue band. Turn the sky blue, leave the mountains alone. It's the difference between editing a photo and fighting a photo.
The inputs that matter:
- hue_shift (-360 to +360) - rotates hue in degrees. Small shifts on
redsfix skin tone; big shifts are the "recolor the car" move. - saturation (-100 to +100) - at -100 the targeted range goes grayscale, at +100 it's doubled. The tooltip says "double," not "maxed" - that's a Photoshop-faithful choice, and it means -100 to 0 is the range you'll actually use.
- lightness (-100 to +100) - brighten or darken just that range.
- target_color - the range selector above.
- colorize + colorize_hue / colorize_saturation - a monochrome tint mode. It desaturates everything and recolors with a single hue. Instant cyanotype or sepia without touching the gradient tools.
Output is a single IMAGE, same size, batch-safe - the README's multi-frame processing applies here too.
Installing it
The whole pack installs the same way. ComfyUI Manager → search "RC Image Compositor" → install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/kj863257/ComfyUI_RC_Image_Compositor
cd ComfyUI_RC_Image_Compositor
pip install -r requirements.txt
Dependencies are pillow, numpy, opencv-python - no downloads, no models. The README mentions the pack ships "intelligent presets" (Cyanotype, Sepia, Vibrance) on top of the basic controls, so there's a shortcut lane for looks.
Where people get burned
- The range selector is a blunt instrument.
redscovers a wide band, and skin, lips, and a red shirt all live in it. If you shiftreds, you shift all of them. That's expected Photoshop behavior, but beginners assume "reds" means "the one red object." lightnessis not "brightness of the whole image." Onmasterit is; on a targeted range it only lifts that color family. Wrong target = weird results you can't explain.- Big hue shifts posterize. Rotating 100+ degrees on a smooth gradient can band because the hue wrap-around has no dithering. If you see banding, break the shift into two smaller nodes with a blend between.
RC Hue/Saturation is the node to grab the moment you see a cast you can name. Point it at the offender, nudge saturation down and hue over, and skip the mask entirely.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| hue_shift | FLOAT | 0-360–360 | Hue shift in degrees (-360 to +360) |
| saturation | FLOAT | 0-100–100 | Saturation adjustment (-100 = grayscale, +100 = double) |
| lightness | FLOAT | 0-100–100 | Lightness adjustment (-100 = black, +100 = white) |
| colorize | BOOLEAN | false | Colorize mode (convert to monochromatic) |
| colorize_hue | FLOAT | 00–360 | Colorize hue (only in colorize mode) |
| colorize_saturation | FLOAT | 500–100 | Colorize saturation (only in colorize mode) |
| target_color | COMBO | master | Target color range: - master: All colors - reds: Red range - yellows: Yellow range - greens: Green range - cyans: Cyan range - blues: Blue range - magentas: Magenta range |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |