SimplePNG

0

Описание

SimplePNG Decoder — это легкая библиотека для микроконтроллеров ESP8266 и ESP32, предназначенная для декодирования изображений в формате PNG.

Языки

  • C++100%
README.md

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

IDE screenshot placeholder

Скриншот Converter SimplePNG

Скачать с Яндекс.Диск.

IDE screenshot placeholder

Лицензия

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