Не могу разобраться со структурой .bmp файла - вопрос №502211

Как я понял, bmp файл состоит из 4-х частей.

  1. один заголовок
  2. другой заголовок
  3. палитра 
  4. байты нашей картиночки

Первые 2 элемента представляют собой структуры, с ними все ясно. А вот как заполнить в моем случае 3 и 4 — не знаю.

 Мне нужно сохранить при помощи ассемблера (примеры желательно в си) мою каринку в файл, где каждый пиксель описывается одним байтом, таким образом разрядность изображения — 8бит. Размер картинки — 320x200 пикселей. Не знаю что добавлять в палитру и само изображение.

Лучший ответ по мнению автора

блок 3 — палитра

это сейчас редко используется, но вообще — например для 8-битного изображения (где цвет каждого пикселя кодируется одним байтом) можно было задать для каждого из значений этого байта реальное значение цвета в RGB. То есть, если в заголовке указано, что изображение 8-битовое и палитровое, то в блоке палитры нужно указать что-то такое:

0 — 00 00 00 00

...

15 — FF FF FF 00

тогда пиксель с индексным цветом 0 будет черным, а с индексным цветом 15 — белым

Почему используются 4 байта а не 3 (red green blue) я не знаю. Возможно зарезервировано под альфа-канал.

Ну и блок 4 — это просто поток цветов пикселей. Например для режима 320*200 и 8 битной цветности будет иметь размер 64000 байта и содержать построчные значения индексов цветов в палитре… Если изображение не палитровое — для кодирования каждого пикселя обычно используется 3 байта.

Есть еще один момент. Почему-то Bmp хранит построчные данные в обратном порядке, то есть первой идет нижняя строка

23.12.12
Лучший ответ по мнению автора

Глеб Черняк

Сейчас на сайте
Читать ответы

Олег Николаевич

Читать ответы

Георгий

Читать ответы
Посмотреть всех экспертов из раздела Технологии
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store