ComfyUI Node

Black and White

Desaturate with per-color control, like a film filter

By chrisfreilich·Created 2 years ago·Updated about a year ago· 93
Black and White
  • image
  • IMAGE
red0.00
green0.00
blue0.00
cyan0.00
magenta0.00
yellow0.00

Flattening an image to grayscale with a plain desaturate node throws away information - every color collapses to the same brightness math regardless of what it was. This node does what film photographers and Photoshop's Black and White adjustment layer both do instead: it lets you decide how bright or dark each original color becomes once it's converted, the same way a red or yellow lens filter on black-and-white film changes how skies and skin render. It's the difference between a flat conversion and one with actual tonal control.

How it works

Before collapsing the image to grayscale, the node reweights each of six color ranges - red, green, blue, cyan, magenta, yellow - up or down. Push red up and anything that was reddish in the color original comes out brighter in the black-and-white result; push it down and those areas go darker. Because these six ranges cover the whole color wheel, you get fine control over the final tonal relationships without touching the underlying image structure.

The inputs and outputs that matter

  • image - the image to convert.
  • red, green, blue, cyan, magenta, yellow (-1 to 1 each, default 0) - per the author's own description: reduce a value to make that color range darker in the result, increase it to make that range brighter. All six default to 0, which produces a fairly neutral conversion.

Output is a single IMAGE, already flattened to grayscale (represented as a black-and-white IMAGE, not a separate mode).

How to install it

ComfyUI Manager: search Virtuoso Nodes for ComfyUI, install, restart. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/chrisfreilich/virtuoso-nodes
pip install -r virtuoso-nodes/requirements.txt

Restart, look under Virtuoso/Adjustment. No downloads needed.

Common issues & troubleshooting

The default conversion looks flat or muddy. That's expected with all six sliders at 0 - it's a reasonable neutral starting point, not the finished look. Push the slider for whichever color dominates your subject (often red for skin tones, or blue/cyan for skies) to separate it tonally from the rest of the image, the way a colored lens filter would on film.

Two different colors are ending up the same shade of gray and you can't separate them visually. That's the exact problem this node exists to solve - find which two color ranges are colliding (often red vs magenta, or blue vs cyan) and push them in opposite directions until they separate in brightness.

You want to keep some color, not go fully black and white. This node always produces a grayscale result - there's no partial-desaturation mode here. For a partial effect, you'd want to blend this node's output back over the original color image using Blend Modes at less than 100% opacity.

CategoryVirtuoso/Adjustment

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
redFLOAT0.00-1–1
greenFLOAT0.00-1–1
blueFLOAT0.00-1–1
cyanFLOAT0.00-1–1
magentaFLOAT0.00-1–1
yellowFLOAT0.00-1–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE