Nodes/ComfyUI-JH-PixelPro/Color: ColorLab (ACR)
ComfyUI Node

Color: ColorLab (ACR)

An entire Adobe Camera Raw panel stack in one (very tall) node

By jetthuangai·Created 6 months ago·Updated 5 months ago· 6
Color: ColorLab (ACR)
  • image
  • image
◄basic_exposure0.00►
◄basic_contrast0►
◄basic_highlights0►
◄basic_shadows0►
◄basic_whites0►
◄basic_blacks0►
◄basic_texture0►
◄basic_clarity0►
◄basic_dehaze0►
◄basic_vibrance0►
◄basic_saturation0►
◄hsl_red_hue0►
◄hsl_red_sat0►
◄hsl_red_lum0►
◄hsl_orange_hue0►
◄hsl_orange_sat0►
◄hsl_orange_lum0►
◄hsl_yellow_hue0►
◄hsl_yellow_sat0►
◄hsl_yellow_lum0►
◄hsl_green_hue0►
◄hsl_green_sat0►
◄hsl_green_lum0►
◄hsl_aqua_hue0►
◄hsl_aqua_sat0►
◄hsl_aqua_lum0►
◄hsl_blue_hue0►
◄hsl_blue_sat0►
◄hsl_blue_lum0►
◄hsl_purple_hue0►
◄hsl_purple_sat0►
◄hsl_purple_lum0►
◄hsl_magenta_hue0►
◄hsl_magenta_sat0►
◄hsl_magenta_lum0►
◄grade_shadow_hue0►
◄grade_shadow_sat0►
◄grade_shadow_lum0►
◄grade_shadow_bal0►
◄grade_mid_hue0►
◄grade_mid_sat0►
◄grade_mid_lum0►
◄grade_mid_bal0►
◄grade_highlight_hue0►
◄grade_highlight_sat0►
◄grade_highlight_lum0►
◄grade_highlight_bal0►
◄gray_enablefalse►
◄gray_red0►
◄gray_orange0►
◄gray_yellow0►
◄gray_green0►
◄gray_aqua0►
◄gray_blue0►
◄gray_purple0►

This is the node that makes the pack's "pro-grade color suite" claim believable. JHPixelProColorLab is a monolithic Adobe Camera Raw-style color node: one node body with 55 parameters that run a deterministic Basic → HSL → Color Grading → Gray Mix pipeline, all in pure PyTorch, all on the tensor. If you've ever wished ComfyUI had a proper grading tool instead of a pile of math nodes, this is the one that says "yes, but it's one tall node."

The pipeline order matters and it's worth knowing: Basic first (global exposure and tone), then HSL (per-color-family adjustments), then Color Grading (shadow/midtone/highlight tinting), then Gray Mix (black & white weights). Everything defaults to neutral, and all-zero with gray_enable=False is a true identity - so it's safe to drop into a workflow and dial up from zero, knowing you're starting from "nothing changed."

What's behind the 55 knobs

The parameter names group into panels:

  • Basic (basic_*, 11 controls): exposure, contrast, highlights, shadows, whites, blacks, texture, clarity, dehaze, vibrance, saturation. This is your exposure/tone pass in one cluster.
  • HSL (hsl_*, 24 controls): eight hue anchors - red, orange, yellow, green, aqua, blue, purple, magenta - each with hue, saturation, and luminance. This is the selective-color panel; if you've used the pack's JHPixelProHueSaturationRange and wanted it for all families at once, this is the all-at-once version.
  • Color Grading (grade_*, 12 controls): shadow, midtone, and highlight hue / saturation / luminance plus balance per region - the teal-and-orange cinematic look lives here.
  • Gray Mix (gray_*, 8 controls): gray_enable plus seven B&W mix weights. Skipped entirely when disabled, so leaving it off costs you nothing.

There's a basic_* input for every one of these plus the image input, and a single image output. That's the whole interface.

The honest caveats

Two things to internalize before you get frustrated. First, there is no custom tabbed widget - all 55 controls are scrollable in one node body, grouped by naming convention. It works, but it's a wall of sliders; treat the basic_ / hsl_ / grade_ / gray_ prefixes as your navigation. Second, this is an ACR-compatible approximation, not Adobe's code - the tone masks, HSL hue falloff, and grading masks are pure PyTorch approximations. For a retouch/grading pass it's excellent; for pixel-perfect reproduction of a specific Lightroom preset, it won't be identical.

There's a practical play here worth stealing from the pack's own workflow library: run your grade through ColorLab, then use the HALD pipeline (JHPixelProHALDIdentity → chain → JHPixelProLUTExport) to bake that wall of sliders into a portable .cube LUT. Grade interactively in ColorLab, ship the result as a LUT.

Install

ComfyUI Manager → search ComfyUI-JH-PixelPro, or:

cd ComfyUI/custom_nodes
git clone https://github.com/jetthuangai/ComfyUI-JH-PixelPro.git
cd ComfyUI-JH-PixelPro
pip install -r requirements.txt

Restart ComfyUI; it's under ComfyUI-JH-PixelPro/color. The pack needs ComfyUI ≥ 0.43.x, Python ≥ 3.10, plus kornia, mediapipe, opencv-python-headless, and scipy.

My verdict: this is the node people will either love or dismiss on sight. The love case is real - it's the only thing in this pack that gives you a full ACR-style grade in one place, which is exactly what "professional retouching in ComfyUI" was missing. The dismissal case is also fair: 55 scrollable sliders is a lot of interface for a graph tool. Start with Basic and one HSL family, verify with a before/after, and let the node earn its height.

CategoryComfyUI-JH-PixelPro/color

Inputs (56)

NameTypeDefaultDescription
imageIMAGE—
basic_exposureFLOAT0.00-5–5—
basic_contrastFLOAT0-100–100—
basic_highlightsFLOAT0-100–100—
basic_shadowsFLOAT0-100–100—
basic_whitesFLOAT0-100–100—
basic_blacksFLOAT0-100–100—
basic_textureFLOAT0-100–100—
basic_clarityFLOAT0-100–100—
basic_dehazeFLOAT0-100–100—
basic_vibranceFLOAT0-100–100—
basic_saturationFLOAT0-100–100—
hsl_red_hueFLOAT0-100–100—
hsl_red_satFLOAT0-100–100—
hsl_red_lumFLOAT0-100–100—
hsl_orange_hueFLOAT0-100–100—
hsl_orange_satFLOAT0-100–100—
hsl_orange_lumFLOAT0-100–100—
hsl_yellow_hueFLOAT0-100–100—
hsl_yellow_satFLOAT0-100–100—
hsl_yellow_lumFLOAT0-100–100—
hsl_green_hueFLOAT0-100–100—
hsl_green_satFLOAT0-100–100—
hsl_green_lumFLOAT0-100–100—
hsl_aqua_hueFLOAT0-100–100—
hsl_aqua_satFLOAT0-100–100—
hsl_aqua_lumFLOAT0-100–100—
hsl_blue_hueFLOAT0-100–100—
hsl_blue_satFLOAT0-100–100—
hsl_blue_lumFLOAT0-100–100—
hsl_purple_hueFLOAT0-100–100—
hsl_purple_satFLOAT0-100–100—
hsl_purple_lumFLOAT0-100–100—
hsl_magenta_hueFLOAT0-100–100—
hsl_magenta_satFLOAT0-100–100—
hsl_magenta_lumFLOAT0-100–100—
grade_shadow_hueFLOAT00–360—
grade_shadow_satFLOAT00–100—
grade_shadow_lumFLOAT0-100–100—
grade_shadow_balFLOAT0-100–100—
grade_mid_hueFLOAT00–360—
grade_mid_satFLOAT00–100—
grade_mid_lumFLOAT0-100–100—
grade_mid_balFLOAT0-100–100—
grade_highlight_hueFLOAT00–360—
grade_highlight_satFLOAT00–100—
grade_highlight_lumFLOAT0-100–100—
grade_highlight_balFLOAT0-100–100—
gray_enableBOOLEANfalse—
gray_redFLOAT0-200–300—
gray_orangeFLOAT0-200–300—
gray_yellowFLOAT0-200–300—
gray_greenFLOAT0-200–300—
gray_aquaFLOAT0-200–300—
gray_blueFLOAT0-200–300—
gray_purpleFLOAT0-200–300—

Outputs (1)

NameTypeDescription
imageIMAGE—