Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Работа с изображениями в D

У меня есть двумерный массив булевых значений (bool[][]), и мне нужно записать этот массив в BMP. То есть, к примеру, есть такая матрица:
[0 0 0 0 1] [0 0 1 1 1] [0 0 0 0 1] [0 0 0 0 1] [0 0 0 0 1]
и мне нужно каким-то образом получить из нее .bmp файл с изображением цифры "1". То бишь, true — черный пиксель, false — белый. Как можно это сделать в D?


Ответ

Для записи BMP можете воспользоваться, например, библиотекой arsd, из которой потребуется модули bmp и color
import arsd.bmp, arsd.color;
void main() { ubyte[][] image = [ [ 0, 0, 0, 0, 0, 0, 0, 1], [ 0, 0, 0, 0, 0, 0, 1, 1], [ 0, 0, 0, 0, 0, 1, 1, 1], [ 0, 0, 0, 0, 1, 1, 1, 1], [ 0, 0, 0, 1, 1, 1, 1, 1], [ 0, 0, 1, 1, 1, 1, 1, 1], [ 0, 1, 1, 1, 1, 1, 1, 1], [ 1, 1, 1, 1, 1, 1, 1, 1], [ 0, 1, 0, 1, 0, 1, 0, 1], ];
auto col = [Color.black, Color.green];
auto w = image[0][].length; auto h = image[].length;
ubyte[] data;
for (int j=0; j auto img = new TrueColorImage(w, h, data); writeBmp(img, "result.bmp"); }

Комментариев нет:

Отправить комментарий