КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Заголовок файлу.Кожен файл Windows ВМР розпочинається структурою BITMAPFILENEADER,яка описується в таблиці 3.2.
Таблиця 3.2 Структури Bitmapfileheader.
Щоб переконатись, що файл, який ми читаємо, є файлом ВМР, можна виконати 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.
Висота зображення задається без знаку (unsigned value). Від’ємне значення поля biHaight вказує, що дані пікселів розміщуються зверху донизу, а не за звичним порядком знизу доверху. Структура BITMAPFILENEADER– ще один формат заголовка зображення. В даній структурі полів менше і всім їм відповідають аналогічні поля в структурі BITMAPFILENEADER. Якщо файл використовує структуру BITMAPFILENEADER, дані пікселів не можуть стискатись.
Таблиця 3.4. Структура Bitmapfileheader.
Кольорова палітра.Може організовуватись в одному із трьохформатів. Перші два формати використовуються для відображення даних пік селів в значення RGB – кольору,коли число бітів на піксель =1, 4 чи 8 (поля biBitСount чи bcBitСount). Для файлів ВМР в форматі Windows палітра складається із масиву 2 число бітів структур RGBQUAD (таблиця 3.5). Файли ВМР в форматі OS/2 використовують масив структур RGBTRIPLE (таблиця 2.5). Таблиця 3.5. Структура RGBQUAD
Таблиця 3.6. Структура RGBTRIPLE.
В дійсності, кінцевий формат кольорової палітри повністю не представляє відображення кольорів. Якщо число бітів на піксел =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.
|