SimplePNG
Описание
SimplePNG Decoder — это легкая библиотека для микроконтроллеров ESP8266 и ESP32, предназначенная для декодирования изображений в формате PNG.
Языки
- C++100%
SimplePNG Decoder for ESP8266/ESP32
SimplePNG
Это легкая библиотека для микроконтроллеров ESP8266 и ESP32, предназначенная для декодирования изображений в формате PNG. Библиотека имеет встроенный декодер алгоритма сжатия DEFLATE (LZ77) и не требует установки сторонних зависимостей (таких как libpng или zlib). Идеально подходит для вывода картинок на TFT/OLED дисплеи.
Особенности
- Поддержка любой файловой системы: Работает с LittleFS, SPIFFS, SD, SD_MMC, FFat благодаря передаче ссылки на объект fs::FS. Два формата цвета:
- 16-bit (RGB565) — нативный формат для большинства TFT-дисплеев (например, для библиотеки TFT_eSPI).
- 24-bit (RGB888) — с применением встроенной гамма-коррекции для более точной передачи цвета.
- Встроенный ASCII-просмотрщик: Позволяет вывести изображение символами прямо в Serial монитор для быстрой отладки.
- Управление памятью: Буфер автоматически очищается при закрытии файла или вызове деструктора.
Ограничения
- Поддерживаются только PNG с глубиной цвета 8 бит в форматах RGB (Color Type 2) и RGBA (Color Type 6).
- Не поддерживаются: индексированные цвета (палитры), градации серого и чересстрочная развертка (Interlacing).
— это самый распространенный стандарт для полноцветных PNG изображений. По сути, поддержка «Truecolor» (24 бита) и «Truecolor with Alpha» (32 бита), которые являются форматами по умолчанию для большинства графических редакторов. — Это покрывает 90% ваших потребностей при работе с графикой. — Преобразовать файлы изображений можно например через Paint, Paint.NET или Converter SimplePNG.
- Декодирование требует достаточного объема оперативной памяти (RAM). Для ESP8266 рекомендуется использовать небольшие изображения (например, до 128x128 пикселей). На ESP32 с PSRAM размер может быть значительно больше.
- Для ESP8266 рекомендую поднять частоту с 80 МГц, до 160 МГц (Не обязательно).
Установка
Скачайте репозиторий в виде ZIP-архива (Code -> Download ZIP). В Arduino IDE выберите: Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку... Выберите скачанный архив.
Методы библиотеки
- bool decoder(fs::FS &fs, const char *filename) Открывает и декодирует файл. Возвращает true в случае успеха.
- void close() Освобождает оперативную память и закрывает изображение. (Вызывается автоматически в деструкторе).
- uint16_t getPixel16(uint32_t x, uint32_t y) Возвращает цвет пикселя в формате 16-bit RGB565.
- uint32_t getPixel24(uint32_t x, uint32_t y) Возвращает цвет пикселя в формате 24-bit RGB888 (с гамма-коррекцией).
- uint32_t getWidth() Возвращает ширину загруженного изображения.
- uint32_t getHeight() Возвращает высоту загруженного изображения.
- void print(Print &out) Рисует изображение в виде ASCII-арта в переданный поток (например, в Serial).
Примечание: Если вам нужно включить вывод отладочной информации (логи) в монитор порта, раскомментируйте строку #define PNG_DEBUG_ENABLE в файле SimplePNG.h.
Быстрый старт (Пример использования)
В этом примере мы читаем файл image.png из файловой системы LittleFS, выводим его как ASCII-арт в консоль и получаем цвета отдельных пикселей.
Скриншот вывода изображения как ASCII-Art

Скриншот Converter SimplePNG
Скачать с Яндекс.Диск.

Лицензия
Этот проект распространяется под лицензией MIT. См. файл LICENSE для получения подробной информации.