2012-03-16 1 views
1

Что такое BITMAP.bmBits формат? Как я понимаю, BGR, но с некоторыми выравниваниями (отличается от размера?). Пожалуйста, объясните, как это выравнивает работу и как преобразовать растровое изображение в RGBA без выравнивания (пустого пространства) правильно? Заранее спасибо.BITMAP.bmBits формат

ответ

2

Это зависит от значений остальной части конструкции. Подробности см. В статьях MSDN на CreateBitmap() и BITMAPINFOHEADER.biBitCount.

Каждая строка сканирования (строка пикселей) должны быть выровнены DWORD с прокладкой, рассчитанной с использованием somethign вдоль линий:

ScanLineWidth = 3 - (((Width * BytesPerPixel) + 3) mod 4) 

Другое examplesavailable.

32-разрядные данные на пиксель уже выровнены по DWORD.

+0

У меня есть 24 бит на пиксельные данные (BGR). Что такое линия сканирования? Я не могу понять логику этого выравнивания. Некоторые тесты (c - цветные байты, [размер изображения]) c [1 x 1] c 0 c [1 x 2] ccc [1 x 3] c 0 c 0 c 0 c [1 x 4] cc 0 0 cc [2 x 2] – Demion

+0

Строка сканирования - это один ряд пикселей. Если это 24-бит на пиксель с 2 столбцами, это будет 6 байтов данных, а затем добавляется до 8 байтов (выравнивание по DWORD, делимое на 4) для каждой строки. Если бы это было 4 столбца, это было бы даже 12 байтов, которые уже выровнены по DWORD (делится на 4). – Deanna

+0

Итак, какой алгоритм я должен использовать для преобразования BGR (выровненного) BITMAP в массив пикселей RGB (без выравнивания)? – Demion

Смежные вопросы