C ++ Bitmap Бит на пиксель - PullRequest
       113

C ++ Bitmap Бит на пиксель

0 голосов
/ 22 октября 2011

Я пытаюсь понять, как создать bmp на основе необработанных данных в c ++, и у меня есть несколько вопросов.

Мой bmp может быть черно-белым, поэтому я решил, что в поле бит на пиксель я должен пойти с 1. Однако во многих руководствах я вижу, что поле заполнения добавляет количество битов, чтобы сохранить 32-битное выравнивание, то есть у моего bmp будет тот же размер файла, что и у 24 бит на пиксель bmp.

Правильно ли это понимание или в каком-то смысле 1 бит на пиксель меньше 24, 32 и т. Д.?

Спасибо

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Ответ уже дан выше (строки растрового изображения выровнены / дополнены до 32-битной границы), однако, если вам нужна дополнительная информация, вы можете прочитать DIB и их использование , "DIBЗаголовок "- это объясняет подробно.

Каждая отсканированная линия выровнена по DWORD.Scanline буферизируется для выравнивания;буферизация не обязательно равна 0.

Линии развертки сохраняются вверх дном, при этом первое сканирование (сканирование 0) в памяти является самым нижним сканированием в изображении.(См. Рис. 1.) Это еще один артефакт совместимости Presentation Manager.GDI автоматически инвертирует изображение во время операций Set и Get.Рисунок 1. (Встроенное изображение с отображением памяти и экрана.)

1 голос
/ 22 октября 2011

Монохромные растровые изображения также выровнены, но они не будут занимать столько места, сколько 24/32-битные.

  • Строка 24-битного растрового изображения шириной 5 пикселей займет 16 байтов: 5 * 3 = 15 для пикселей и 1 байт заполнения.
  • Строка из 5-32-битное растровое изображение шириной в пиксель займет 20 байтов: 5 * 4 = 20 для пикселей, нет необходимости в заполнении.
  • Строка растрового растрового изображения шириной в 5 пикселей займет 4 байта: 1 байт для пикселя (этоневозможно использовать меньше байта, поэтому берется весь байт, но не используются 3 из его 8 бит) и 3 байта заполнения.

Таким образом, монохромное растровое изображение, конечно, будет меньшечем 24-битный.

...