ZML_可视化调色
A whole lightroom, living inside one ComfyUI node
- 图像
- 调整后图像
Most color nodes in ComfyUI do one thing - a brightness slider here, a hue node there - and you chain six of them to fake a grade. ZML_ImageColorAdjust (ZML_可视化调色, "visual color grading") is the opposite: it crams an entire adjustment panel into a single node and you drag sliders directly on the node body until the image looks right. No chain, no math, just a small Photoshop-style panel living inside the graph.
It's part of the big ComfyUI-ZML-Image pack, the personal utility kitchen by zml-w that started as "save my prompts in the PNG" and grew past 160 nodes. This one sits in the pack's advanced-image-tools subcategory, and it's one of the author's actually-polished nodes - the README notes a version bug that broke it was fixed in late 2025 and "all features tested working."
How it works
The node takes your image and shows it in an inline editor with sliders for brightness, contrast, saturation, hue, sharpen, gamma, exposure, blur, noise, and vignette. As you move them, the front-end packs your settings into a JSON blob and stashes it in the hidden color_data field; on execution the backend parses that JSON and applies each adjustment in order with OpenCV - HSV space for hue/saturation, a gamma lookup table, additive brightness, and so on.
That's also the honest catch: this node needs opencv-python installed, and the pack's requirements install it for you. If you ever see an "OpenCV未安装" (OpenCV not installed) message in the console instead of a graded image, that dependency is the problem.
The inputs and outputs that matter
There's exactly one input you'll ever touch: 图像 (IMAGE). The color_data string field exists but is hidden - it's the plumbing the slider panel writes into, so don't go hunting for it. The single output, 调整后图像, is the graded image, ready to feed your save node or the next stage.
Two practical limits worth knowing:
- It processes the first image in a batch only - feed it single images, or loop over a batch, if you're grading a batch of frames.
- The adjustment range is meant for light touches, not rescue work. Slamming contrast and saturation up is how you get a posterized mess, same as any photo editor.
Installing it
This is a pack-level install; you get this node and 160+ siblings whether you wanted them or not.
cd ComfyUI/custom_nodes
git clone https://github.com/zml-w/ComfyUI-ZML-Image
Then restart ComfyUI. Or, the easier path, use ComfyUI Manager (Install Custom Nodes → search "ComfyUI-ZML-Image") and let it pull the pack and its requirements - numpy, torch, Pillow, opencv-python, scipy, ultralytics, and friends - in one click. First install is chunky because OpenCV and the YOLO library are big; the nodes in this batch need no model downloads.
One heads-up for English speakers: the whole pack is in Chinese, including this node's display name. The author links a community translation patch (ZZZ_ZML_English_Patch) in the README if you want your menus readable.
When you'd actually reach for it
If you just need one knob, the stock ComfyUI color nodes are lighter. But when you're balancing a batch of generations so they match - brightening, correcting a color cast, matching exposure across a grid - doing it all in one node with a live preview beats a six-node chain. That's the whole pitch: it's the node you keep in a workflow for the final 5% polish, not the one you rebuild around.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| 图像 | IMAGE | — | |
| color_dataopt | STRING | {} | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| 调整后图像 | IMAGE | — |