← All articles · May 10, 2026 · pixel.hjlabs.in · Powered by image2cpp

image2cpp vs LCD Image Converter vs Online Tools 2026

There are a half-dozen tools for converting images into C/C++ byte arrays for embedded displays. Each has strengths. This post compares the five most popular options in 2026 — image2cpp, LCD Image Converter, the U8g2 bitmap tool, the LVGL online converter, and GIMP/ImageMagick scripts — and tells you which fits your workflow.

The five tools

ToolTypeCostPlatform
image2cpp (this site)Web appFreeBrowser
LCD Image ConverterDesktop GUIFree / open sourceWindows / macOS / Linux
U8g2 bitmap toolWeb app + CLIFreeBrowser / Python
LVGL online converterWeb appFreeBrowser
GIMP / ImageMagick scriptsCLI / scriptedFreeCross-platform

image2cpp (pixel.hjlabs.in)

What it does well:

Weaknesses:

Best for: Arduino, ESP32, RP2040, MicroPython projects targeting OLED, mono e-paper, or RGB565 TFTs. Try it now.

LCD Image Converter (riuson)

Desktop application with a powerful template system. Open source on GitHub.

What it does well:

Weaknesses:

Best for: Production firmware projects with build pipelines, custom font work, anything needing precise per-pixel control.

U8g2 bitmap tool

The U8g2 library author maintains both an online tool and a Python script for generating XBM data optimized for U8g2's drawing model.

What it does well:

Weaknesses:

Best for: Pure U8g2 projects (small AVR with page-mode rendering).

LVGL online converter

The official tool at lvgl.io/tools/imageconverter. Generates ready-to-use lv_img_dsc_t declarations.

What it does well:

Weaknesses:

Best for: LVGL-only projects. We covered the full integration in our ESP-IDF LVGL image conversion post.

GIMP / ImageMagick CLI

For build-system integration, ImageMagick can convert any image to XBM or raw bytes:

# Mono XBM
convert input.png -resize 128x64 -monochrome output.xbm

# RGB565 raw bytes (with custom script)
convert input.png -resize 320x240 -depth 8 input.rgb
python3 rgb_to_rgb565.py input.rgb > image_data.h

GIMP can export XBM directly: File → Export As → .xbm.

What it does well:

Weaknesses:

Best for: Production teams with mature build pipelines, consistent asset processing across hundreds of images.

Side-by-side feature matrix

Featureimage2cppLCD ICU8g2LVGLGIMP/ImageMagick
1-bit monoYesYesYesYesYes
RGB565YesYesNoYesScript
4-bit grayscaleNoYesNoYesScript
Indexed paletteNoYesNoYesScript
Floyd–Steinberg ditherYesYesYesNoYes
Live previewYesYesYesYesNo
Batch modeYesYesNoNoYes
CLI / scriptableNoYesYesNoYes
No install neededYesNoYesYes(needs MagickWand)
Privacy (client-side)YesLocal??Local

Decision matrix by project type

Your projectRecommended tool
Arduino + SSD1306 OLED, weekend projectimage2cpp
ESP32 + ILI9341 RGB565image2cpp
U8g2 on ATtiny, page modeU8g2 bitmap tool
LVGL on ESP-IDFLVGL converter
Production firmware with CI buildLCD Image Converter or ImageMagick scripts
Custom font for OLEDLCD Image Converter
MicroPython framebufimage2cpp (raw bytes mode)

The original javl/image2cpp vs pixel.hjlabs.in

The OG javl/image2cpp on GitHub is great but ad-supported and has been minimally maintained for years. pixel.hjlabs.in is a fork with:

Both are 100% client-side — your image never uploads to a server.

Privacy as a feature

For commercial projects, "your image never leaves the browser" is a real advantage. Some teams cannot legally upload product imagery to third-party servers. image2cpp, LCD Image Converter, and GIMP all process locally. The LVGL online converter and many casual web tools upload to a server — check before using.

Bottom line

For 80% of hobby projects, image2cpp is the fastest path: drop in a PNG, tweak, copy. For LVGL projects, use the LVGL converter. For production firmware with strict build pipelines, scripts win. For custom fonts, LCD Image Converter is unmatched. Try image2cpp now — if it fits your workflow, you're done.

Other hjLabs.in tools: og.hjlabs.in for project README graphics, fmt.hjlabs.in for JSON, enhance.hjlabs.in if your source PNG needs upscaling, compliance.hjlabs.in for DPDPA privacy policies, and for laser-cut enclosures.

Try image2cpp now — free, in browser

Drop in a PNG, JPG or BMP. Get a paste-ready C++ array for Arduino, ESP32 or RP2040. 100% client-side. Learn more about image2cpp or jump straight to the tool.

Open the converter →

More from the blog