Nodes/ComfyUI-Majoor-ImageOps/〽️ Image Ops Color Color Correct
ComfyUI Node

〽️ Image Ops Color Color Correct

A color-correction node that thinks it lives in a grading suite

By MajoorWaldi·Created 8 months ago·Updated 8 days ago· 11
〽️ Image Ops Color Color Correct
  • image
  • mask
  • image
  • mask
bypassfalse
temperature0
tint0
hue0
brightness0
contrast0
saturation0
vibrance0
gamma1.0
shadows_hue0
shadows_amount0
midtones_hue0
midtones_amount0
highlights_hue0
highlights_amount0
shadows_temperature0
shadows_tint0
shadows_contrast0
shadows_saturation0
shadows_vibrance0
shadows_gamma1.00
shadows_brightness0
midtones_temperature0
midtones_tint0
midtones_contrast0
midtones_saturation0
midtones_vibrance0
midtones_gamma1.00
midtones_brightness0
highlights_temperature0
highlights_tint0
highlights_contrast0
highlights_saturation0
highlights_vibrance0
highlights_gamma1.00
highlights_brightness0
invert_maskfalse

ImageOps Color Correct is the node that makes ComfyUI feel like a grading suite for a few minutes. It takes the usual brightness/contrast/saturation trio and then goes way past it: temperature, tint, vibrance, gamma, hue rotation, and - the part that sets it apart - per-range corrections for shadows, midtones, and highlights. Instead of building a ladder of separate adjustment nodes, you get the whole grading panel in one place, with a live preview so you're not queueing a render to see what +5 contrast looks like. It's the flagship of the ComfyUI-Majoor-ImageOps pack.

The controls that matter most

All processing happens in linear float32 space, which is the right call - contrast and gamma behave like a colorist expects when you're not fumbling around in gamma-encoded space. The headline set, all on a −100…100 scale:

  • temperature and tint - warm/cool and green/magenta balance. This is your "make it feel like golden hour" and "kill the green cast from a bad light" lever.
  • hue (−180…180) - full hue rotation, for stylized shifts or fixing a baked-in color cast.
  • brightness, contrast, saturation, vibrance - the standard quartet. Note vibrance is separate from saturation: it boosts the less-saturated colors, so skin tones don't go nuclear while the sky pops.
  • gamma (0.2–2.2) - midtone lift/compress, the one knob you'll grab more than any other.

The shadow/midtone/highlight section

This is the differentiator. For each of shadows, midtones, and highlights you get a *_amount (how much of the range the correction applies to) plus its own hue, temperature, tint, brightness, contrast, saturation, vibrance, and gamma. In practice you'll mostly use two things from here: shadows_* to lift or cool the blacks, and highlights_* to warm or tame the top end. That's a classic filmic look - warm highlights, slightly cool shadows - and you can dial it in entirely on this node.

Inputs and outputs

Inputs are image (IMAGE or VIDEO frame source) and an optional mask with invert_mask if you only want to grade part of the frame. Outputs are image and mask, both batch-friendly - a full clip grades in one pass, which is exactly what you want when every frame needs to match. bypass gives you a clean on/off for A/B comparison.

Install

ComfyUI Manager (search "ComfyUI-Majoor-ImageOps"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/MajoorWaldi/ComfyUI-Majoor-ImageOps

Restart and hard-refresh the browser (Ctrl+F5 / Cmd+Shift+R). No models, no heavy dependencies.

Where it gets fiddly

The honest gotcha: this node has a lot of sliders, and the panel auto-collapses controls when there are more than four - double-click any slider to reset it to default, which is the escape hatch when you've twisted twenty knobs and want to start over. The other trap is the split-tone section confusing people into thinking they need to touch all of it. You don't. Ignore the per-range hue sliders until you're doing serious stylization; temperature + contrast + gamma on the main panel will get 90% of jobs done. And remember it operates on linear data - a gamma of 1.0 is neutral, so don't read the 0.2–2.2 range as a 0–100 scale.

Categoryimage/imageops

Inputs (39)

NameTypeDefaultDescription
bypassBOOLEANfalse
temperatureFLOAT0-100–100
tintFLOAT0-100–100
hueFLOAT0-180–180
brightnessFLOAT0-100–100
contrastFLOAT0-100–100
saturationFLOAT0-100–100
vibranceFLOAT0-100–100
gammaFLOAT1.00.2–2.2
shadows_hueFLOAT0-180–180
shadows_amountFLOAT00–100
midtones_hueFLOAT0-180–180
midtones_amountFLOAT00–100
highlights_hueFLOAT0-180–180
highlights_amountFLOAT00–100
shadows_temperatureFLOAT0-100–100
shadows_tintFLOAT0-100–100
shadows_contrastFLOAT0-100–100
shadows_saturationFLOAT0-100–100
shadows_vibranceFLOAT0-100–100
shadows_gammaFLOAT1.000.2–2.2
shadows_brightnessFLOAT0-100–100
midtones_temperatureFLOAT0-100–100
midtones_tintFLOAT0-100–100
midtones_contrastFLOAT0-100–100
midtones_saturationFLOAT0-100–100
midtones_vibranceFLOAT0-100–100
midtones_gammaFLOAT1.000.2–2.2
midtones_brightnessFLOAT0-100–100
highlights_temperatureFLOAT0-100–100
highlights_tintFLOAT0-100–100
highlights_contrastFLOAT0-100–100
highlights_saturationFLOAT0-100–100
highlights_vibranceFLOAT0-100–100
highlights_gammaFLOAT1.000.2–2.2
highlights_brightnessFLOAT0-100–100
invert_maskBOOLEANfalse
imageoptIMAGE,VIDEOImages/Video input. Accepts IMAGE batches and VIDEO frame sources.
maskoptMASK

Outputs (2)

NameTypeDescription
imageIMAGE
maskMASK