Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Project.doc
Скачиваний:
1
Добавлен:
02.05.2019
Размер:
319.49 Кб
Скачать
    1. Структура файлу

BMP-файл складається з чотирьох частин:

  • Заголовок файлу (BITMAPFILEHEADER)

  • Заголовок зображення (BITMAPINFOHEADER, може бути відсутнім). BITMAPV4HEADER (Win95, NT4.0) BITMAPV5HEADER (Win98/Me, 2000/XP)

  • Палітра (може бути відсутня)

  • Власне зображення

BITMAPFILEHEADER8:

Ця структура містить інформацію про тип, розмір і подання даних у файлі.

Тип WORD повинен мати розмір 16 біт, типи DWORD і LONG – 32 біта, тип LONG – знаковий, порядок байтів мається на увазі little endian9.

  • bfType – тип файлу, символи «BM» (в HEX: 0x42 0x4d).

  • bfSize – розмір всього файлу в байтах.

  • bfReserved1 і bfReserved2 – зарезервовані, повинні містити нулі.

  • bfOffBits – містить зміщення в байтах від початку структури BITMAPFILEHEADER до безпосередньо бітів зображення.

BITMAPINFOHEADER (найпростіший випадок):

  • biSize – розмір структури в байтах.

  • biWidth – ширина зображення в пікселях. Для Win98/Me і Win2000/XP: якщо поле biCompression містить BI_JPEG або BI_PNG, тут вказана ширина розпакованого зображення.

  • biHeight – висота зображення в пікселах. Якщо містить позитивне значення - зображення записано в порядку знизу вгору, нульовий піксель в нижньому лівому кутку. Якщо значення від'ємне - зображення записано зверху вниз, нульовий піксел у верхньому лівому куті зображення.

  • biPlanes – містить одиницю.

  • biBitCount – вказує кількість біт на піксель.

  • biCompression – вказує тип стиснення для стиснених зображень.

Палітра:

Палітра може містити послідовність чотирьохбайтові полів за кількістю доступних кольорів (256 для 8-бітного зображення). Три молодші байти кожного поля визначають інтенсивність червоною, зеленою і синьою компоненти кольору, старший байт не використовується. Кожен піксель зображення описаний в такому випадку одним байтом, що містить номер поля палітри, в якому збережений колір цього пікселя.

Якщо піксел зображення описується 16-бітовим числом, палітра може зберігати три двобайтових значення, кожне з яких визначає маску для вилучення з 16-бітного піксела червоною, зеленою і синьою компонент кольору.

Файл BMP може не містити палітри, якщо в ньому зберігається нестиснене повнокольорове зображення.

Власне зображення:

Послідовність пікселів, записаних в тому чи іншому вигляді. Пікселі зберігаються порядково, знизу вгору. Кожен рядок зображення доповнюється нулями до довжини, кратній чотирьом байтам.

В bmp файлах з глибиною кольору 24 біта, байти кольору кожного пікселя зберігаються в порядку BGR (Blue, Green, Red).

B bmp файлах з глибиною кольору 32 біта, байти кольору кожного пікселя зберігаються в порядку BGRA (Blue, Green, Red, Alpha).

    1. Складнощі у використанні

Складнощі виникають у трьох випадках:

  1. Якщо зображення розташоване «ногами вгору» (перший ряд пікселів на місці останнього) то зчитувати зображення потрібно або з кінця до початку, або з початку до кінця але записувати у кінець масиву.

  2. Якщо зображення не 32-бітне, то є можливість появи доповнення - кожен рядок зображення доповнюється нулями до довжини, кратній чотирьом байтам, яке треба «перескакувати».

  3. Якщо зображення стиснене – це вже проблема у використанні і не тільки зображення формату BMP.

Але ці проблеми досить легко вирішуються за при використанні бібліотек з відкритим вихідним кодом як, наприклад, EasyBMP. Адже «навіщо винаходити велосипед», якщо від стоїть у тебе на задньому дворі.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]