Make a photo look right on a display that only has two colours
E-paper and reflective monochrome panels are 1 bit per pixel β black ink or nothing. Dropping a colour photo on one without dithering gives you a black rectangle. This tool converts the photo properly: resample to the exact panel resolution, convert to luminance, then apply a real error-diffusion dither so the tones survive as texture instead of turning into mud.
It exports a true 1-bit PNG (bit depth 1, greyscale) as well as an 8-bit greyscale version, and generates the ESPHome YAML to show it on a wall display.
Panel size
Dithering
Export
1-bit PNG is the real thing (bit depth 1). The 8-bit file only contains black and white pixels and is the safer choice for ESPHome's online_image decoder.
Preview β
Then pick your panel size and a dithering algorithm.
ESPHome snippet
Host the PNG somewhere your ESP32 can reach, then point online_image at it.
Why this looks the way it does
- Normally white. Most reflective mono panels are white paper with black ink. "Invert" flips the output if your panel reads the opposite way.
- Dithering is the whole trick. A hard threshold throws away everything between black and white, so a face becomes a flat blob. Error diffusion spreads the rounding error into neighbouring pixels, and the eye reads the texture as tone.
- Resolution is the limit. 400Γ300 has 120,000 pixels. A family group photo at that size is roughly 20Γ20 pixels per face β enough to recognise, not enough to admire.
- Bright and contrast before dithering. The panel has a 15:1 contrast ratio and no backlight, so a flat mid-grey photo has no headroom. Push the blacks down and the whites up.
- Dithering is not free on the device. The ESP32 does the conversion here, in your browser, once. The panel only ever receives finished black-and-white pixels.