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 5 months ago·Updated 4 months ago· 5
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