84 × 48 pixels x — · y —
RAW Tools image-converter

Monochrome Display Image Generator

Robert Eisele

Small monochrome displays do not consume ordinary PNG or JPEG files. Their controllers expect a packed one-bit framebuffer in a specific byte order. The generator above converts an imported image into that representation while keeping the result editable at pixel level.

Choose the Target Display

Presets cover common modules such as the 84 × 48 Nokia 5110 with a PCD8544 controller and 128 × 64 OLED modules based on SSD1306 or SH1106 controllers. Custom dimensions support other monochrome LCD, OLED, and e-paper displays. Confirm the buffer layout expected by the graphics library or controller driver; identical dimensions do not imply identical byte ordering.

Convert an Image to One Bit

Every output pixel must be either off or on. Threshold conversion is best for line art and icons with clean edges. Floyd-Steinberg and Atkinson error diffusion preserve perceived brightness in photographs, while ordered Bayer dithering creates a regular pattern that is stable on displays with slow refresh. The threshold control shifts the balance between light and dark pixels, and inversion accommodates displays or APIs with opposite polarity.

After conversion, draw directly in the enlarged preview to repair isolated pixels or simplify details that cannot survive at the target resolution. Undo and redo retain the recent edit history. Processing and export happen entirely in the browser; uploaded images are not transmitted.

Select the Correct Byte Layout

The byte count shown beside the export is the minimum packed size, rounded up where a width or height is not a multiple of eight. Copy the generated declaration or download it as a header, then pass its dimensions and data to the matching display routine.

Nokia 5110 Example

For direct PCD8544 framebuffer transfers, choose the Nokia 5110 preset and vertical-page layout. A complete 84 × 48 image occupies 504 bytes. For Adafruit GFX drawBitmap(), choose horizontal MSB-first instead:

display.clearDisplay();
display.drawBitmap(0, 0, display_image, 84, 48, BLACK);
display.display();

See the Nokia 5110 display guide for controller wiring, contrast configuration, framebuffer details, and complete Arduino examples.