Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Загрузка BMP |
Автор: kevor13 25.1.2009, 00:12 |
Итак перелопатив изрядную часть инета я так и не понял как выполнить на мой взгляд не очень сложную задачу На входе: Изображение BMP 24 на выходе: Массив состоящий из int Большинство мануалов на эту тему загружают BMP в char (???) я был очень благодарен хотя бы описанию как это сделать.. PS Здача поставлена для обработки изображения - потом будут применятся фильтры. Может быть Целочисленный массив не лучший выбор? PSSЕсли тема уже была удалите и забудьте о ней ) |
Автор: SIRIUStar 25.1.2009, 00:25 |
PS Здача поставлена для обработки изображения - потом будут применятся фильтры. Может быть Целочисленный массив не лучший выбор? Почему же? думаю что выбор как раз удачный) думаю что тебе нужно это typedef struct tagBITMAP { /* bm */ int bmType; int bmWidth; int bmHeight; int bmWidthBytes; BYTE bmPlanes; BYTE bmBitsPixel; LPVOID bmBits; } BITMAP; поле bmBits содержит указатель на массив растра. ЗЫ там чказатель на массив байтов(unsigned char).. но ты можешь выцепить от туда инты, нада прыгать через 4 байта по нему)) bmBits Points to the location of the bit values for the bitmap. The bmBits member must be a long pointer to an array of 1-byte values. |
Автор: Alexeis 25.1.2009, 00:27 |
А как собсно с ним работать? 24 бита это 3 байта, int 4 байта. Используя char можно адресовать каждый цвет пикселя, а с интами чего делать? Для интов нужен формат 32 бита на цвет, тогда каждому int у будет соответствовать пиксель. |
Автор: kevor13 25.1.2009, 00:38 |
то есть работая с чарами какс интами? я просто хочу получить привычный вид от 0 до 255) |
Автор: mes 25.1.2009, 00:41 |
позвольте узнать, а где у Вас с чарами такое не получается ? |
Автор: kevor13 25.1.2009, 00:49 |
все - вопрос снят) все спасибо. |
Автор: SIRIUStar 25.1.2009, 01:02 |
Цвет всегда кодируется интом. 24 бита это RGB еще 8 это альфо канал. Обычно bmp его не использует. Но есть и 32 разрядные форматы bmp. поэтому по массиву чаров нада прыгать интом. |
Автор: GoldFinch 25.1.2009, 01:22 |
SIRIUStar, 24разряда это 24 а не 32, читай про .bmp формат и не морочь людям головы |
Автор: inside_pointer 25.1.2009, 01:33 |
читать в трёхбайтовый массив типа unsigned char, а сохранять в unsigned long int, где старший байт == 0 (unsigned чтобы не случилось никаких преобразований потом, когда будешь юзать) |
Автор: Dem_max 25.1.2009, 06:36 |
у 32 разрядного bmp выравнивание данных по 4 |