Bitmap Input & Settings

Drag & drop an image here
PNG, JPG, BMP, GIF (first frame), WEBP supported
128

Preview & OutputLive

Processed preview (128×128px)
Upload or load a sample to see the preview…
Adjust settings or upload an image to see the generated array…

Bitmap to Array Converter

Convert images to packed byte arrays for embedded systems, Arduino, and Rust projects

What is Bitmap to Array Converter?

Bitmap to Array Converter is a powerful tool for converting images into packed byte arrays suitable for embedded systems development. It supports multiple bits-per-pixel (1/2/4/8 bpp), various dithering algorithms, and multiple output formats including C arrays, Arduino PROGMEM, and Rust arrays. All processing happens locally in your browser for privacy and speed.

How to Use Bitmap to Array Converter

  1. Upload an Image: Drag and drop or click to upload your image file (PNG, JPG, BMP, etc.).
  2. Select Bits Per Pixel: Choose 1, 2, 4, or 8 bpp depending on your display requirements.
  3. Configure Options: Set dithering (none or Floyd-Steinberg), bit order (MSB/LSB), and row order.
  4. Choose Output Format: Select C array, Arduino PROGMEM, Rust array, or hex string format.
  5. Preview and Download: View the live preview and download as .h header file or .bin binary.

Key Features

Multiple Bit Depths

Support for 1, 2, 4, and 8 bits per pixel for various display types

Floyd-Steinberg Dithering

High-quality dithering algorithm for better grayscale representation

Live Preview

See the converted output in real-time as you adjust settings

Multiple Output Formats

C array, Arduino PROGMEM, Rust array, and hex string formats

Bit Order Control

Choose MSB-first or LSB-first packing for your target platform

Row Order Options

Top-to-bottom or bottom-to-top row ordering support

Offline Processing

All conversion happens locally in your browser - no server upload

LocalStorage Persistence

Your settings are saved automatically for future sessions

Supported Output Formats

Available Formats

C Array:

Standard C array with const uint8_t declaration

Arduino PROGMEM:

Flash memory storage for Arduino projects

Rust Array:

Static byte array for Rust embedded projects

Hex String:

Raw hexadecimal string for custom parsing

Frequently Asked Questions

What bit depth should I use?

Use 1 bpp for monochrome displays (OLED, e-ink), 2 bpp for 4-level grayscale, 4 bpp for 16-level grayscale, and 8 bpp for full 256-level grayscale displays.

When should I use dithering?

Enable Floyd-Steinberg dithering when converting photographic or gradient images to lower bit depths. It creates the illusion of more colors/shades by distributing quantization errors to neighboring pixels.

What's the difference between MSB and LSB?

MSB-first (Most Significant Bit) packs the leftmost pixel into the highest bit, while LSB-first (Least Significant Bit) packs it into the lowest bit. Check your display driver documentation for the correct setting.

Is my image data private?

Yes! All image processing happens entirely in your browser using JavaScript. Your images are never uploaded to any server.

Can I use this for commercial projects?

Absolutely! The generated output is yours to use in any project, commercial or personal.