Re: Сохранение bitmap c bitcount = 8
От: Misha30  
Дата: 23.05.11 11:31
Оценка:
Всем спасибо, отчасти все были правы.
Итак для тех, кто вдруг наткнется на эту ветку с поиском такого же ответа.
Делать GetDIBits надо с флагом DIB_PAL_COLORS, но это лишь требование для получения корректной битмапы. Ошибка же заключалось в том — что если у нас палитра (а она будет для 256-разрядных изображний) объявление BITMAPINFO bmi не выделит нам достаточно места для хранения всей битмапинфы, так как она просто не знает, сколько выделять под палитру и выделит лишь под BITMAPINFOHEADER — известное заранее значение. Выход из этой ситуации — использовать указатель на структуру PBITMAPINFO и выделять —
pbmi = (PBITMAPINFO) LocalAlloc(LPTR,sizeof(BITMAPINFOHEADER)+ sizeof(RGBQUAD) * (2^(SIZE)));
где SIZE — размер картинки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.