Заголовок файлу.
Кожен файл 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; просмотров: 1503;