Nodes/ComfyUI XWAVE Nodes/XWAVE Posterize
ComfyUI Node

XWAVE Posterize

Posterize with the dithering options you actually wanted

By XWAVEart·Created about a year ago·Updated about a year ago· 2
XWAVE Posterize
  • image
  • IMAGE
levels8
dither
color_space

Plain posterize - crush the color levels down and watch gradients turn to bands - is a one-trick node in most toolkits. XWAVE Posterize does the trick properly, and what earns it a spot is the dithering section: four methods including real Floyd–Steinberg and Atkinson error diffusion, plus a choice of which color space the quantization happens in. If you want the classic retro print look with smooth gradients instead of ugly banding, this is the node.

How it works

levels (2–256) sets how many steps each channel gets; the step size is 255 / (levels - 1), and every pixel is quantized to the nearest step. Then:

  • none - straight quantization. Maximum banding, maximum retro.
  • floyd-steinberg - classic error diffusion: the rounding error from each pixel is smeared onto its neighbors (7/16, 3/16, 5/16, 1/16). Best for gradients.
  • atkinson - Apple's sharper variant; error is divided by 8 and spread wider. High-contrast, crisp dither.
  • ordered - a tiled 4×4 Bayer matrix adds a regular checker pattern instead of diffusing. That's the halftone-ish look.

color_space (rgb, hsv, lab) decides what you quantize. RGB is the plain version; HSV quantizes hue/saturation/value separately which gives wilder, more artistic color steps; LAB aims for perceptually uniform steps (the implementation is a simplified conversion, not color-managed, but it does change the character of the bands).

Inputs: levels, dither, color_space, plus the image. Output: a single IMAGE into Preview/Save.

Setting it up

  • 2–4 levels: extreme poster. 8–16: the classic retro/comic look. 32–64: subtle reduction that still kills banding.
  • Gradients + floyd-steinberg is the "make it look like an old print" combo.
  • ordered when you want a visible, regular texture rather than a smooth diffused one.
  • hsv color space for poster art that pops - hue steps create bold color fields.

Installing it

It's in ComfyUI XWAVE Nodes. ComfyUI Manager → search "XWAVE" → install ComfyUI XWAVE Nodes → restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/XWAVEart/comfyui-xwave-xlitch-nodes
cd comfyui-xwave-xlitch-nodes
pip install -r requirements.txt

Pillow, numpy, scipy - no models, no keys. One install covers the pack.

Gotchas

  • Floyd–Steinberg and Atkinson are slow. They're pure-Python per-pixel loops with no numpy vectorization. On a big image they'll take real seconds; on a video batch, don't. Use ordered or none for anything time-sensitive.
  • levels = 256 is a no-op. Step becomes 1, so nothing visibly changes. It's the "off" switch.
  • HSV/LAB modes run the dither in that space, then convert back - the conversions are simplified, so you may see slightly different hues than a color-managed pipeline would give. Fine for art, wrong if you need exact color.
  • Default dither is none. Expect banding on the first run and don't panic - flip to floyd-steinberg and the image transforms.

The pack is new with zero community signal, so there's no shared settings wisdom - but posterize is deterministic math and easy to eyeball. If you've been making do with a basic posterize and ugly banding, the dither options here are a genuine upgrade.

CategoryXWAVE/Color

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
levelsINT82–256
ditherCOMBO4 options: none, floyd-steinberg, atkinson, ordered
color_spaceCOMBO3 options: rgb, hsv, lab

Outputs (1)

NameTypeDescription
IMAGEIMAGE