SuperColorTransfer PM
Re-tint a portrait to match a reference — on the skin, not the whole shot
- main_image
- transfer_image
- avatar_box
- IMAGE
SuperColorTransfer PM is what this pack calls a "multi-node integration" - instead of making you chain five nodes yourself, it bundles the color-match plus the mask logic into one box. Feed it a portrait and a reference image, and it shifts your portrait's colors toward the reference's mood. The "super" is doing real work here: it applies the transfer to skin only, so you get the warm golden-hour look of a reference photo without the whole shot turning orange.
Here's the actual pipeline, which is worth knowing because it explains the quirks. First it does a classic color transfer - matching the mean and standard deviation of the main image's LAB channels to the reference's. That's a statistical match, not a learned relight; it makes the color distribution match. Then it computes a face-skin mask on the result using the pack's Face_Skin model, blurs it, and uses it to blend: the skin region takes the transferred color, everything else keeps the original. So the background and hair stay true while the face picks up the reference's tone. That's the trick that makes it usable in the EasyPhoto workflow - it's how the swapped face gets harmonized with the target image's lighting instead of sitting on it like a sticker.
Inputs:
- main_image - the portrait you want to change.
- transfer_image - the reference whose colors you're borrowing.
- avatar_box (optional) - a BOX limiting the transfer to a region, pasted back into the original afterward. Grab it from RetinaFace's
crop_boxoutput.
Output is a single IMAGE.
The optional avatar_box matters more than its "optional" label suggests. Without it, the color statistics are computed over the whole image, and if your reference's background is a very different brightness, the skin tone can drift in weird ways. With a box around the face, both images are analyzed face-to-face and the result only affects that region - which is both more predictable and faster. If the EasyPhoto workflow wired it up with RetinaFace's box, you should too.
Where it'll disappoint you: the stats-match approach assumes the two images are roughly comparable - same general pose, similar lighting direction, face roughly the same size. Feed it a backlit landscape as the reference and you'll get skin that's statistically correct and visually wrong. It also can't do anything about a face that's lit from the wrong direction; that's a relight, not a recolor, and this node won't fix it.
Install and gotchas are the pack-wide ones: ComfyUI Manager or git clone https://github.com/THtianhao/ComfyUI-Portrait-Maker into custom_nodes, restart, and let the first-startup download of several GB of models finish without interrupting. On first run this node pulls the face-skin model into the pack's models/ folder and the underlying pieces from ModelScope's cache, so the first execution is slow and every one after is fast. It's a 2024-era pack that's been quiet since v1.2.0, so it works, but budget some patience with the install.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| main_image | IMAGE | — | |
| transfer_image | IMAGE | — | |
| avatar_boxopt | BOX | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |