Nodes/Photography Nodes/Contrast Brightness
ComfyUI Node

Contrast Brightness

The two sliders you reach for before anything clever

By TrophiHunter·Created about a year ago·Updated about a year ago· 5
Contrast Brightness
  • image
  • IMAGE
contrast1.000
brightness0.000

Every photo edit starts the same way: it's a little flat, pull the contrast; a little dark, lift the brightness. This node is exactly that - no curves, no histograms, no LUTs, just the two knobs. If you're building a batch photo-finishing pipeline with the Photography Nodes pack, this is the front door, the first thing in the chain that sets the baseline everything else grades on top of.

How it works

Under the hood it's embarrassingly simple, and that's the point. Every pixel gets multiplied by contrast and then shifted by brightness: clamp((image * contrast) + brightness). Contrast pivots around zero, brightness is an additive offset on a -1 to +1 scale. There's no gamma curve, no luminance-aware processing - which means it's predictable and fast, and it's exactly what you want when you need a deterministic starting point for a whole batch of images rather than a clever tone curve that behaves differently on every frame.

The contrast slider runs 0.05–4, where 1 is neutral. Values below 1 flatten (handy for that washed-out "filmic base" before a LUT), values above 1 punch. Brightness sits at 0 neutral, -1 all the way black, +1 blown out. The node clamps the output to 0–255-equivalent so you never get NaN or out-of-range pixels further down the graph.

Inputs that matter

Just two:

  • contrast - 0.05–4, default 1. Your main dial for punch vs. flat
  • brightness - -1 to 1, default 0. Lift or drop exposure

One IMAGE in, one IMAGE out.

Install

It's part of Photography Nodes, so it's a one-time pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/TrophiHunter/ComfyUI_Photography_Nodes

Restart and look under TrophiHunter/Photography (ComfyUI Manager: search "Photography Nodes"). No requirements.txt, no model files - pure torch math.

Where people get burned

The main trap is treating contrast as a sharpening tool. Cranking contrast to 3 on a soft image gives you crunchy clipped edges, not detail - that's what Sharpen Unsharp Mask is for. Also note this is a linear adjustment, so on already-contrasty images it clips highlights fast; the pack's Levels Adjustment gives you the input/output range control if you're fighting blown whites. In the author's example workflow, Contrast → Levels → Saturation → LUT is the canonical opening sequence, and honestly that ordering is the right lesson: flatten with contrast, re-range with levels, then grade.

CategoryTrophiHunter/Photography

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
contrastFLOAT1.0000.05–4
brightnessFLOAT0.000-1–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE