πΎ Brightness Contrast Adjust
The two sliders you've been faking with math
- image
- IMAGE
Some nodes deserve a dissertation. This one deserves two sliders. Brightness Contrast Adjust takes an image, adds a brightness offset, applies a contrast factor, and hands the result back - no modes, no masks, no hidden surprises. It's the pixel-editing equivalent of a cup of coffee: boring, dependable, and you'll reach for it constantly once it's in your toolbox.
The two inputs
- brightness (β100 to 100, default 0) - a simple additive offset, mapped so +100 shifts everything up by half a stop-worth of value (the code adds
brightness/200). - contrast (β100 to 100, default 0) - scales values around the 0.5 midpoint. +100 is a 2x stretch (punchy), β100 collapses toward mid-gray (flat and milky).
That's the entire input surface. One image in, one IMAGE out. It runs on the first frame of the batch and leaves the rest of your pipeline untouched, which makes it perfect as a quick fix between a VAE decode and a Save node.
Why you'd use this instead of the fancier stuff
Because sometimes "fix it with one drag" beats "open the full color suite." The same pack has Levels Adjust (black/white point + gamma) and Curves Adjust Pro (full channel control) - those are the surgical tools. Brightness Contrast is the blunt one, and blunt is right when you just need a batch of renders to stop looking slightly under-exposed. It's also a nice neutral "before" stage: do your contrast pass here, then let the creative grading happen in curves or a LUT on top.
Install
It's part of the MachinePainting Nodes pack:
cd ComfyUI/custom_nodes
git clone https://github.com/machinepainting/ComfyUI-MachinePaintingNodes.git
pip install -r requirements.txt
or ComfyUI Manager β search "MachinePaintingNodes" β install β restart. Like every node in this pack, the install drags along opencv-python-headless and rembg even though this particular node only needs numpy - the price of buying the whole toolkit at once.
Gotchas
Contrast around 0.5 midpoint means it will blow out highlights if you push it hard on an already-bright image - at +100 contrast, anything above mid-gray gets shoved toward white fast. If your output looks clipped, dial contrast back before you blame the image. And note it works on the luminance/values uniformly across channels; there's no separate brightness-per-channel here. For that, Color Adjust Blend or Channel Mask Pro in the same pack have you covered. One more: it's a straight full-image pass - no mask input - so if you need to brighten only a face, take the mask route instead.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| brightness | FLOAT | 0-100β100 | β |
| contrast | FLOAT | 0-100β100 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |