Используя stbi_write_png, как преобразовать прямоугольный angular байтовый массив из 0 и 1 в моно chrome png файл? - PullRequest
0 голосов
/ 05 февраля 2020

Используя библиотеку изображений stb , как преобразовать массив байтов angular прямоугольного типа, каждый элемент которого имеет значение 0 или 1, в одноцветное изображение png, где 1 представляют цветные пиксели , используя вызов функции stbi_image_write? Вот код, который у нас есть:

using namespace std;

#define STB_IMAGE_IMPLEMENTATION
#include "stb/stb_image.h"
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb/stb_image_write.h"

/* ... */

const uint32_t BITMAP_SIZE = height * width;
uint8_t* bitmap = new uint8_t[BITMAP_SIZE];
for (int i = 0; i < BITMAP_SIZE; i++) // clear the bitmap
    bitmap[0] = 0;
/* write 1s to some elements of bitmap */

constexpr int CHANNELS = 4; // indexed (really 1 or 0)
string filename = "my_image.png";
stbi_write_png(/* what parameters should be passed here? */); 
delete [] bitmap;

Как правильно передать параметры в stbi_write_png для получения желаемого результата, описанного выше?

1 Ответ

1 голос
/ 06 февраля 2020

Вам нужно CHANNELS = 1 (потому что это 1 байт на пиксель).

stbi_write_png(filename.c_str(), width, height,
                             CHANNELS, bitmap, width * CHANNELS);
...