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-файлы.