Заголовок файлу.
Кожен файл Windows ВМР розпочинається структурою BITMAPFILENEADER,яка описується в таблиці 3.2.
Таблиця 3.2 Структури Bitmapfileheader.
| Ім’я поля | Розмір в байтах | Опис |
| bfType | Вміщує символи «ВМ», які ідентифікують тип файлу | |
| bfSize | Розмір файлу | |
| bfReserved 1 | Не використовуються | |
| bfReserved 2 | Не використовуються | |
| bfOffBits | Зсув до початку даних пік селів |
Щоб переконатись, що файл, який ми читаємо, є файлом ВМР, можна виконати 3 перевірки:
1) Перші 2 байти повинні вміщувати ASCII – символи «В» та «М»; «В» передує «М».
2) Якщо використовується файлова система, яка дозволяє визначати точний розмір файлу в байтах, можна порівняти розмір файлу із значенням поля bfSize.
3) Значення полів bfReserved 1 та ~2 – нулеві.
Заголовок зображення.Може бути в одному із двох форматів, що визначаються структурами BITMAPFILENEADER->(40 байтів)та BITMAPFILENEADER ->(12 байтів).
Структура Bitmapfileheader представляє формат ВМР для OS/2, а Bitmapfileheader – формат Windows (більш поширений).
Відрізнити ці структури можна за їх розміром: Bitmapfileheader – 12 байтів,
Bitmapfileheader – не менше 40 В.
Опис структури Bitmapfileheader наводиться в таблиці 3.3.
Таблиця 3.3. Структура Bitmapfileheader.
| Ім’я поля | Розмір [байти] | Опис |
| BiSize | Розмір заголовка. Повинен бути не менше 40 | |
| BiWidth | Ширина зображення | |
| BiHeight | Висота зображення | |
| BiBitСount | Число бітів на піксель – 1,4,8,16,24 чи 32 | |
| BiPlanes | Повинно бути =1 | |
| BiCompression | Тип стиснення : BI_RGB=0; BI_RLE8=1; BI_RLE4=2; BI_BITFIELDS=3 | |
| BiSizeImage | Розмір зображення – може бути =0, якщо нема стиснення. | |
| BiXPelsPerMeter | Переважальна дозволяючи сироможність в пікселях на метр заХ/2. | |
| BiYPels per Meter | За Y. Переважальна дозволяюча спроможність в пікселях на метр. | |
| BiClrUsed | Число фактичного використання елементів карти кольорів. | |
| BiCllrImportant | Число кольорів, що мають вагомість |
Висота зображення задається без знаку (unsigned value). Від’ємне значення поля biHaight вказує, що дані пікселів розміщуються зверху донизу, а не за звичним порядком знизу доверху.
Структура BITMAPFILENEADER– ще один формат заголовка зображення. В даній структурі полів менше і всім їм відповідають аналогічні поля в структурі BITMAPFILENEADER. Якщо файл використовує структуру BITMAPFILENEADER, дані пікселів не можуть стискатись.
Таблиця 3.4. Структура Bitmapfileheader.
| Ім’я поля | Розмір [байти] | Опис |
| BiSize | Розмір заголовка повинен =12 | |
| BiWidth | Ширина зображення | |
| BiHeight | Висота зображення | |
| BiPlanes | Повинно =1 | |
| BiBitСount | Число бітів – 1,4,8 або 24 |
Кольорова палітра.Може організовуватись в одному із трьохформатів. Перші два формати використовуються для відображення даних пік селів в значення RGB – кольору,коли число бітів на піксель =1, 4 чи 8 (поля biBitСount чи bcBitСount). Для файлів ВМР в форматі Windows палітра складається із масиву 2 число бітів структур RGBQUAD (таблиця 3.5). Файли ВМР в форматі OS/2 використовують масив структур RGBTRIPLE (таблиця 2.5).
Таблиця 3.5. Структура RGBQUAD
| Поле | Розмір | Опис |
| RgbBlue | Значення синього кольору | |
| RgbGreen | Значення зеленого кольору | |
| RgbRed | Значення червоного кольору | |
| RgbReserved | Повинно =0 |
Таблиця 3.6. Структура RGBTRIPLE.
| Поле | Розмір | Опис |
| rgbtBlue | Значення синього кольору | |
| rgbtGreen | Значення зеленого кольору | |
| rgbtRed | Значення червоного кольору |
В дійсності, кінцевий формат кольорової палітри повністю не представляє відображення кольорів. Якщо число бітів на піксел =16 чи 32, значення bitCompression структури BITMAPFILENEADER =Bi_BITFIELDS (3), то місце масиву структур RGBQUAD займає масив із трьох 4-байтових цілих чисел. Ці три значення є бітовими масками, які вказують біти, що використовуються для R, G та B компонентів відповідно…
Для зображень з 24 бітами на піксель, а також для 16 – та 32 – бітових зображень кольорова палітра відсутня, якщо поле bitCompression не встановлене рівним Bi_BITFIELD.
В 32 – бітовому зображенні три 32 – бітові значення

вказується на те, що кожен із цих компонентів представляється 10 бітами. Логічне множення (AND) трьох значень повинно =0, а діапазон ненулевих бітів кожного компоненту повинен бути неперервним.
Дані пікселів.Зазвичай дані розміщуються безпосередньо за (BITMAP INFOHEDER чи BITMAPCOREHEADER) структурами, але і можуть відокремлюватися байтами – заповнювачами. Щоб визначити зміщення даних пікселів відносно структури BITMAPCOREHEADE, необхідно скористатись значенням поля bfoffBits у заголовку BITMAPCOREHEADER.
Формати даних пікселів залежить від числа бітів на піксел.
1). 1 і 4 біти на піксел. Кожен байт даних поділяється або на 8, або на 2 поля, значення яких
представляє вказівник в кольоровій палітрі. Поле старшого біта – крайній
лівий піксел.
2). 8 бітів на піксел. Кожен піксел в рядку описується 1 байтом, який є вказівником в кольоровій
палітрі.
3). 16 бітів на піксел. Кожен піксел описується 2 – байтовим цілим числом. Якщо значення поля
biCompression в структурі BITMAPCOREHEADER = B1_RGB (0), Яскравість
(intensity) кожного кольору представляється 5 бітами (старший біт не викори-
Стовується). Використання бітів за замовчуванням:
Рисунок 3.6. Формат 16 бітів на піксел.
Червоний
| Синій
| Зелений |
Якщо значення поля biCompression = значенню Bi_BITMAP, при 4 – байтовій
бітові маски, що слідують за структурою BITMAPCOREHEADER, вказують
біти, що використовуються для кожного кольорового компонента. Бітові ма-
ски йдуть за порядком R, B, G.
4). 24 бітів на піксел. Кожен байт – значення B, G, R– компонентів відповідно. (Цей порядок зво-
ротній тому, що використовується у більшості форматів файлів зображень)
5). 32 бітів на піксел. За виключенням невикористання байту у кінці (25÷31 біти) цей формат по-
вністю подібний формату з 24 бітами на піксел.
Якщо поля biCompression включає значення Bi_BITFIELD, три 4-байтові
бітові маски, що слідують за структурою BITMAPCOREHEADER, вказують
біти, які використовуються для кожного компонента. Порядок масок: R, B, G.
Дата добавления: 2014-12-08; просмотров: 1619;

Червоний
Синій