Nodes/ComfyUI-Apt_Preset/color_match_adv
ComfyUI Node

color_match_adv

Match one image's grade onto another, with a skin-protection dial

By cardenluo·Created 2 years ago·Updated 18 days ago· 309
color_match_adv
  • ref_img
  • target_image
  • target_mask
  • image
strength1.0
skin_protection0.2
brightness_range0.5
contrast_range0.5
saturation_range0.5
tone_strength0.5

This is the "make this shot look like that shot" tool. color_match_adv takes a reference image and pushes a target image's color toward it - useful for matching a generation to a reference photo's grade, or keeping a batch visually consistent by matching everything back to one hero frame. It's under Apt_Preset/image/color_adjust.

The interesting part is skin_protection. Naive color matching - pushing a whole image's tone and histogram toward a reference - is notorious for wrecking skin, because skin sits in a narrow color band that generic matching algorithms don't treat specially. This node bakes in a dedicated dial to pull the match back off skin-colored pixels instead of leaving you to fix it after the fact.

How it works

ref_img supplies the target grade; target_image is what gets pushed toward it. strength scales the overall match intensity. brightness_range, contrast_range, saturation_range, and tone_strength each read as a ceiling on how far the tool is allowed to push that specific property while matching, rather than a fixed target - think of them as guardrails on an otherwise automatic process. skin_protection pulls matching back off skin-toned pixels specifically.

The inputs and outputs that matter

  • ref_img and target_image (both required IMAGE) - reference grade, and the image getting matched to it.
  • strength (0.1-2, default 1) - the dial to reach for first if the match looks too aggressive or too weak.
  • skin_protection (0-1, default 0.2) - keep this above 0 on anything with people in it; the default is modest for a reason.
  • brightness_range / contrast_range / saturation_range (0.1-2 each, default 0.5) and tone_strength (0.1-2, default 0.5) - per-property limits on the match.
  • Optional target_mask - restrict matching to a masked region of target_image.
  • Output: image.

How to install it

Through ComfyUI Manager: search "ComfyUI-Apt_Preset", install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git

then run install.bat (Windows) or install requirements manually on Linux/Mac, and restart. No model downloads for this node.

Common issues & troubleshooting

Match looks too aggressive or "painted on." Lower strength first, before touching the individual *_range sliders - it's the more direct control.

Skin tones shift despite the protection dial. Push skin_protection higher toward 1 rather than lowering overall strength - that's the targeted fix, since strength affects the whole image and skin_protection is specifically scoped to skin-colored pixels.

Result barely changes. Check strength and tone_strength aren't both sitting near their low end (0.1) - this node needs some intensity dialed in to be visible.

Want to see the match before committing? color_match_adv_visual has the identical parameter set, flagged as an output node for live preview.

IMPORT FAILED on the pack. ComfyUI-Apt_Preset is large and updates often; users have reported import failures after some updates. Reinstall via Manager before assuming it's this node.

CategoryApt_Preset/image/color_adjust

Inputs (9)

NameTypeDefaultDescription
ref_imgIMAGE
target_imageIMAGE
strengthFLOAT1.00.1–2
skin_protectionFLOAT0.20–1
brightness_rangeFLOAT0.50.1–2
contrast_rangeFLOAT0.50.1–2
saturation_rangeFLOAT0.50.1–2
tone_strengthFLOAT0.50.1–2
target_maskoptMASK

Outputs (1)

NameTypeDescription
imageIMAGE