PizzaPNG

PizzaPNG — библиотека на языке C++ для простой генерации файлов изображений в формате PNG в программах для Windows. Лицензия: MIT.

Особенности

  • Простой программный интерфейс (API).
  • Нет зависимостей. libpng не требуется.
  • Автоматически удаляются ненужные метасекции, которые добавляет GDI+.
  • Поддерживается вставка произвольных двоичных секций.
  • Заголовочные файлы не зависят от заголовочных файлов, специфичных для Windows.
  • Цветовой подтип PNG-файла (с прозрач­ностью или без) выбирается авто­мати­чески на основании наличия (полу­)проз­рачных пикселов.

Пример

Программа ниже генерирует зелёное изображение размером 123×42 с полу­прозрач­ностью 50% и сохраняет его как файл с именем example.png.

#include <cstdint>
#include <fstream>
#include <string>

#include "pizza-png/src/Image.h"

using std::ios;

int main() {
    uint16_t width  = 123,
             height = 42;

    MaratTanalin::PizzaPNG::Image image(width, height);

    for (uint16_t y = 0; y < height; y++) {
        for (uint16_t x = 0; x < width; x++) {
            image.addPixel(0, 255, 0, 127);
        }
    }

    std::string pngData = image;

    std::ofstream fs("example.png", ios::out | ios::binary | ios::trunc);
    fs.write(pngData.data(), pngData.size());
    fs.close();
}

Ограничения

  • Только для Windows, т. к. используется GDI+.
  • Поддерживаются только 24- и 32-битные (24 бит с прозрачностью) PNG-файлы.