Что мне нужно сделать, чтобы преобразовать DIB в BMP? - PullRequest
2 голосов
/ 07 ноября 2008

Что мне нужно сделать, чтобы преобразовать DIB в BMP?

Ответы [ 3 ]

3 голосов
/ 17 августа 2013

Документация по типам растровых заголовков: http://msdn.microsoft.com/en-us/library/dd183386%28VS.85%29.aspx.

В коде разница между bmp-файлом и представлением памяти dib заключается в наличии структуры BITMAPFILEHEADER в начале (http://msdn.microsoft.com/en-us/library/dd183374(v=vs.85).aspx). Так что буквальный ответ для преобразования bmp в dib состоит в том, чтобы пропустить BITMAPFILEHEADER и начать с адресом памяти заголовка DIB (сразу после заголовка файла растрового изображения), который всегда находится на 14 байтов после начала адреса памяти bmp.

BITMAPFILEHEADER *bmp = ...;
char * bmpBytes = reinterpret_cast<char *>(bmp);
void * myDib = (void *)bmpBytes + BMP_HEADER_LENGTH; /* (14 bytes) */
/* cast and do something with myDib */
...

НТН

2 голосов
/ 07 ноября 2008

Проверьте API GdipCreateBitmapFromGdiDib

Пример: http://www.codeproject.com/KB/GDI-plus/DIBtoBitmap.aspx

1 голос
/ 07 ноября 2008

Функция преобразования Imagemagick сделает это (и многие другие преобразования) для вас в командной строке. Бесплатный, открытый исходный код, доступный на всех основных платформах. Это отличная программа, которая должна быть в любом наборе инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...