Image Adjustments ποΈ
Brightness, contrast and color correction with live preview
- image
- image
A live brightness/contrast/color-correction panel that lives inside a single node. The author's own framing in the README is refreshingly honest about it: "I'm not the first to do it, but I did it the way I like it" - live updates, no separate window, works standalone or wired into a bigger workflow, and it supports dragging an image in, pasting from clipboard, or connecting a socket. If you've ever wanted to nudge an image's exposure or warmth without round-tripping through an external editor, this is built for exactly that.
How it works
Everything you'd normally think of as separate typed widgets - brightness, contrast, saturation, temperature, gamma, sharpness, hue - is actually bundled into a single widget_state field behind the scenes, a JSON blob the node's custom UI reads and writes as you drag its sliders. You're not meant to hand-edit that JSON; it's the serialized state of the on-canvas controls, and it's what makes "live updates, no extra windows" possible - the node redraws the preview as you move a slider rather than requiring you to re-run the graph.
You can source the image three ways: upload a file, paste from your clipboard, or connect an IMAGE from elsewhere in your workflow. If both an upload and a connected input are present, the connected one wins - the node's own tooltip on the image input says as much directly: "Optional IMAGE from another node. Takes priority over the uploaded image."
The inputs and outputs that matter
widget_state- the JSON-serialized slider state (brightness, contrast, saturation, temperature, gamma, sharpness, hue, plus an internal image path). You interact with this through the node's sliders, not by typing JSON.image(optional) - a connected IMAGE socket, which overrides a manually uploaded/pasted image when present.
Output is a single adjusted image, ready to chain into a Save Image or the next step of your pipeline.
Installing it
Via ComfyUI Manager: search "iTools" or "ComfyUI-iTools," install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/MohammadAboulEla/ComfyUI-iTools
then restart.
Troubleshooting
Slider adjustments aren't affecting the output. Check whether an IMAGE is connected to the optional image socket - per the node's own tooltip, a connected input always wins over whatever you uploaded or pasted manually, so if you're adjusting a manually-loaded image while a socket is also wired in, your slider changes are landing on the image being ignored.
Pasting from clipboard doesn't work. This is a right-click-to-paste interaction on the node itself, not a standard browser paste - make sure you're right-clicking the node's canvas area specifically, and that your browser/OS clipboard actually holds an image (not just copied text or a file reference) at the moment you try it.
A saved/reloaded workflow lost your adjustments. The slider state travels as part of the widget_state JSON, which is saved with the workflow like any other widget value - if adjustments vanished after a reload, check whether the workflow file itself was actually saved after you made the changes, rather than assuming this node dropped the state on its own.
You want heavier post-processing than sliders can do - masked corrections, multi-step color grading, film-emulation LUTs. This node covers the quick, single-pass adjustment case well; for anything more involved, a dedicated compositing/color-grading pack (WAS Node Suite is the common general-purpose one for this kind of image processing) is the better tool.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| widget_state | STRING | {"brightness":0,"contrast":100,"saturation":100,"temperature":0,"gamma":100,"sharpness":100,"hue":0,"imagePath":""} | β |
| imageopt | IMAGE | Optional IMAGE from another node. Takes priority over the uploaded image. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |