Что такое BITMAP.bmBits
формат? Как я понимаю, BGR
, но с некоторыми выравниваниями (отличается от размера?). Пожалуйста, объясните, как это выравнивает работу и как преобразовать растровое изображение в RGBA
без выравнивания (пустого пространства) правильно? Заранее спасибо.BITMAP.bmBits формат
1
A
ответ
2
Это зависит от значений остальной части конструкции. Подробности см. В статьях MSDN на CreateBitmap()
и BITMAPINFOHEADER.biBitCount
.
Каждая строка сканирования (строка пикселей) должны быть выровнены DWORD с прокладкой, рассчитанной с использованием somethign вдоль линий:
ScanLineWidth = 3 - (((Width * BytesPerPixel) + 3) mod 4)
32-разрядные данные на пиксель уже выровнены по DWORD.
У меня есть 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
Строка сканирования - это один ряд пикселей. Если это 24-бит на пиксель с 2 столбцами, это будет 6 байтов данных, а затем добавляется до 8 байтов (выравнивание по DWORD, делимое на 4) для каждой строки. Если бы это было 4 столбца, это было бы даже 12 байтов, которые уже выровнены по DWORD (делится на 4). – Deanna
Итак, какой алгоритм я должен использовать для преобразования BGR (выровненного) BITMAP в массив пикселей RGB (без выравнивания)? – Demion