Image Adjust
Brightness, contrast, and saturation in one pass — 1.0 means leave it alone
- image
- image
CdlImageAdjust is the one-stop shop for the three classic photo tweaks - brightness, contrast, saturation - in a single node that takes a normal ComfyUI IMAGE and hands back a normal IMAGE. No tensors to wrangle, no format conversion, no cdlTensor-only ports. If your image looks flat, washed out, or oversaturated, this is the quick dial. It's part of ComfyDL's Image Tools category, and it's one of the few nodes in the pack that plays nicely with the rest of the ComfyUI ecosystem exactly because it speaks the standard IMAGE type.
How it works
Each of the three factors goes through a torchvision adjustment - adjust_brightness, adjust_contrast, adjust_saturation. The semantics are simple:
- 1.0 = unchanged. That's the default for all three, so a fresh node does nothing until you move a slider.
- Greater than 1.0 = stronger (brighter, more contrast, more color).
- Less than 1.0 = weaker, down to 0.0 which zeroes that property out entirely (black for brightness, flat gray for contrast, grayscale for saturation).
A neat implementation detail: any factor sitting at exactly 1.0 is skipped rather than computed, so the node is effectively free when you're only tweaking one channel. The adjustments run in [B, H, W, C] image-batch space, so a whole batch gets the same treatment consistently.
Inputs and output
image- a standard ComfyUIIMAGEbatch.brightness- FLOAT 0–2, default 1.0.contrast- FLOAT 0–2, default 1.0.saturation- FLOAT 0–2, default 1.0.
The output is image, same IMAGE type and same batch layout - wire it straight into PreviewImage, SaveImage, or another image-op node.
Where you'd use it
Anywhere you'd reach for the color adjustments in a photo editor but want it inside the graph: fixing a generated image that came out too dark, punching up contrast before sending an image to a detailer, or standardizing inputs to a dataset viewer. Because it's plain IMAGE-in / IMAGE-out, it slots into ordinary ComfyUI workflows with zero friction - which is more than you can say for most of ComfyDL's tensor-native nodes.
Installing it
It ships with ComfyDL, one install for all 106 nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Cynthia-lxx/ComfyDL
pip install -r ./ComfyDL/requirements.txt
Restart ComfyUI, or search "ComfyDL" in ComfyUI Manager. No extra dependency beyond what ComfyUI already provides - the adjustments are torchvision, which ships with ComfyUI.
Gotchas
- The ranges top out at 2.0 and bottom at 0.0, which is a lot of range; a 1.5 brightness can already look washed out on a bright image. Small steps (0.05) are the sensible increments, and the slider is set up that way.
- These are factor-based adjustments, not the fancier auto-levels or histogram-stretching you get from a full photo suite - if an image needs real tonal correction, this node is the quick pass, not the finishing tool.
- Batch consistency cuts both ways: the same factor applies to every frame in the batch, so you can't grade frames individually without splitting them first.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| brightness | FLOAT | 1.000–2 | — |
| contrast | FLOAT | 1.000–2 | — |
| saturation | FLOAT | 1.000–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |