Nodes/comfyui-mixlab-nodes/Image Color Transfer ♾️Mixlab
ComfyUI Node Runs on cloud

Image Color Transfer ♾️Mixlab

Match one image's color palette to another

By MixLabPro·Created 3 years ago·Updated 2 months ago· 1,859
Image Color Transfer ♾️Mixlab
  • source
  • target
  • IMAGE
weight0.50

Got two images and want the second one to take on the color mood of the first? That's this node. Image Color Transfer pushes the color statistics of a reference image onto a target - the tones, the temperature, the overall palette - so a generation that came out cold and blue can inherit the warm golden grade of a photo you like. It's a quick color-match/color-grade tool, no LUTs, no manual curves.

Where this earns its place: consistency. When you generate a batch and they all come out with slightly different color casts, transferring them all toward one reference brings the set into a shared look. Same for compositing - paste a subject onto a new background and their colors clash; a color transfer nudges them toward agreement. It's a small node that quietly fixes the "these don't look like they belong together" problem.

How it works

It's classic statistical color transfer (the Reinhard-style approach): it looks at the color distribution - roughly, the mean and spread of each color channel - of the source and reshapes the target's distribution to match. The result is that the target keeps its content and structure but adopts the source's color character. The weight lets you dial how far to push, so you're not stuck with all-or-nothing.

It's worth being clear about what it does not do: it's not style transfer, it's not relighting, it's not a model. It moves color statistics around. Shapes and detail stay put; only the palette shifts.

Inputs and outputs

  • source (IMAGE, required) - the reference whose colors you want to borrow.
  • target (IMAGE, required) - the image that will receive that color character.
  • weight (FLOAT, default 0.5, range 01) - how strongly to apply the transfer. 0 leaves the target unchanged, 1 fully matches the source's palette, 0.5 is a balanced blend. This is your one dial and it's the one to play with.

Output is IMAGE - the recolored target. Send it to a preview to eyeball the grade, then tune weight to taste.

A quick note on which input is which: source is the look you want, target is the content you're recoloring. Swapping them is the single most common mistake - if the result recolored the wrong picture, you've got them backwards.

How to install it

Ships with the Mixlab pack.

  • ComfyUI Manager: search comfyui-mixlab-nodes, install, restart.
  • Manual: cd ComfyUI/custom_nodes && git clone https://github.com/shadowcz007/comfyui-mixlab-nodes.git, install requirements (install.bat on Windows or ../../../python_embeded/python.exe -s -m pip install -r requirements.txt), restart.

Common issues

It recolored the wrong image: you swapped source and target. Source = the palette to copy from; target = the image to change.

The result looks garish or washed out: statistical transfer overshoots when the two images have very different content - e.g. a mostly-sky source pushing a mostly-skin target toward blue. Pull weight down toward 0.20.4 for a subtle nudge instead of a full match. A gentle transfer almost always looks better than a hard one.

Colors bleed where I didn't want them: the transfer is global - it doesn't know about regions. If you only want to recolor part of the image, mask it and composite the transferred result back over the original, rather than expecting the node to be selective.

Reference choice matters more than the node: the whole effect is only as good as the source you pick. A clean, representative reference with the mood you actually want beats fiddling with weight on a bad reference.

Category♾️Mixlab/Color

Inputs (3)

NameTypeDefaultDescription
sourceIMAGE
targetIMAGE
weightFLOAT0.500–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE