πΎ Color Adjust Blend
Color balance in shadows, midtones, and highlights β with optional reference matching
- image
- color_reference
- IMAGE
Every photo editor has "color balance," and it's always the same three zones: shadows, midtones, highlights, each with R/G/B sliders. Color Adjust Blend brings that to ComfyUI, then adds a genuinely useful extra - an optional reference image whose colors get matched onto yours before the balance runs. It's the node you reach for when a render is "almost there" but the skin tones are cold, or when you want one image's palette pulled from another.
How it works
Two stages, and both are optional on their own:
- Reference matching (only if you connect
color_reference): your image is matched to the reference in LAB color space using a statistical transfer, controlled byreference_strength(default 0.75), then applied through ablend_mode(defaultcolor, so luminance stays yours). - RGB color balance: nine sliders -
r/g/b_shadows,r/g/b_midtones,r/g/b_highlights- each β100 to 100, applied per zone using a Photoshop-style shadow/midtone/highlight split.
Leave the reference disconnected and you get a plain, perfectly capable color-balance node. Connect one and you get reference-matched color plus local correction on top. That dual personality is the whole point: it works standalone, and it levels up when it doesn't have to.
The inputs you'll actually touch
- image (required) - your render.
color_reference- optional palette source. The 0β1reference_strengthfades the match in and out;blend_modedecides how the matched color lands (colorkeeps your luminance,luminositydoes the reverse - tryoverlayfor a punchier grade).- The nine zone sliders - this is the real meat for most users. Want warmer skin without torching the whole frame? Nudge
r_midtonesup and maybe pullb_highlightsdown a touch.
Output is a single IMAGE. No mask input here - if you need zone-specific area control, that's Curves Adjust Pro's mask or a mask blend upstream.
Install
MachinePainting Nodes, standard:
cd ComfyUI/custom_nodes
git clone https://github.com/machinepainting/ComfyUI-MachinePaintingNodes.git
pip install -r requirements.txt
or ComfyUI Manager β "MachinePaintingNodes" β install β restart.
Troubleshooting
The number one confusion is expecting the reference to do everything and the balance sliders to do nothing - check reference_strength is above 0, because at 0 the reference match is a no-op and all you're left with is your (also neutral) balance sliders. Also, statistical color matching homogenizes: if two very different references produce suspiciously similar results, that's the known behavior of LAB mean/std transfer (same family as Color Match Blend's statistical method), not a bug - that's when you switch to a different approach or lean on the zone sliders instead. And the classic one: matching against a reference with a strong tint (like an orange-teal grade) will push that tint onto your whole image, so match against a neutral reference and do the creative tint yourself.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| color_referenceopt | IMAGE | β | |
| reference_strengthopt | FLOAT | 0.750β1 | β |
| blend_modeopt | COMBO | color | 10 options: normal, overlay, multiply, screen, soft_light, hard_light, +4 |
| r_shadowsopt | FLOAT | 0-100β100 | β |
| g_shadowsopt | FLOAT | 0-100β100 | β |
| b_shadowsopt | FLOAT | 0-100β100 | β |
| r_midtonesopt | FLOAT | 0-100β100 | β |
| g_midtonesopt | FLOAT | 0-100β100 | β |
| b_midtonesopt | FLOAT | 0-100β100 | β |
| r_highlightsopt | FLOAT | 0-100β100 | β |
| g_highlightsopt | FLOAT | 0-100β100 | β |
| b_highlightsopt | FLOAT | 0-100β100 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |