aspose.info
UK

BMP - формат файлу зображення

Оновлено

Що таке файл BMP?

Файли з розширенням .BMP представляють файли Bitmap Image, які використовуються для зберігання растрових цифрових зображень. Ці зображення не залежать від графічного адаптера, а також називаються форматом файлу растрового зображення, незалежного від пристрою (DIB). Ця незалежність служить для відкриття файлу на кількох платформах, таких як Microsoft Windows і Mac. Формат файлу BMP може зберігати дані як двовимірні цифрові зображення як у монохромному, так і в кольоровому форматі з різною глибиною кольору.

Специфікації формату файлу BMP

Незалежні від пристроїв растрові зображення служать допоміжним засобом для обміну растровими зображеннями між пристроями та програмами. Через постійний розвиток цього формату файлу інформація, що міститься в заголовках, може відрізнятися залежно від версії Bitmap. Один растровий файл складається зі структур фіксованого та змінного розміру в певній послідовності.

Структури у файлі Bitmap розташовані в такому порядку:

СкладНеобов’язковийРозмірПризначення
Заголовок файлуНі14Для збереження загальної інформації про файл растрового зображення
Заголовок DIBНіФіксований розмірДля зберігання детальної інформації про растрове зображення та визначення формату пікселів
Додаткові бітові маскиТак12 або 16 байтДля визначення формату пікселів
Палітра кольорівНапівнеобов’язковийЗмінний розмірДля визначення кольорів, які використовуються даними растрового зображення
Gap1ТакЗмінний розмірВирівнювання структури
Масив пікселівНіЗмінний розмірФормат пікселя визначається заголовком DIB або додатковими бітовими масками.
Gap2ТакЗмінний розмірВирівнювання структури
Колірний профіль ICCТакЗмінний розмірЩоб визначити колірний профіль для керування кольором

Коли растрове зображення завантажується в пам’ять, воно стає структурою DIB, яка використовується Windows через API GDI. Заголовок файлу не є частиною цієї структури даних. Колір також може складатися з 16-бітових записів, які становлять індекси палітри, на яку наразі посилаються, замість явних визначень кольорів RGB. Давайте розглянемо деякі з них докладніше, особливо заголовки.

Заголовок растрового файлу

Заголовок растрового файлу подібний до заголовків інших файлів, які використовуються для ідентифікації файлу. Оскільки існують різні варіанти формату файлу BMP, перші 2 байти формату файлу BMP є символом “B”, а потім символом “M” у кодуванні ASCII. Усі цілі значення зберігаються у форматі little-endian.

Шістнадцяткове зміщенняЗменшення зміщенняРозмірПризначення
0002 байтиПоле заголовка, яке використовується для ідентифікації файлу BMP і DIB, має значення 0x42 0x4D у шістнадцятковому форматі, таке ж, як BM у ASCII. Він може мати такі можливі значення.* BM – Windows 3.1x, 95, NT тощо. * BA – масив растрових зображень структури OS/2 * CI – структура OS/2 кольорова піктограма * CP – покажчик кольору OS/2 const * IC – піктограма структури OS/2 * PT – покажчик OS/2
0224 байтиРозмір файлу BMP у байтах
0662 байтиЗарезервовано; фактичне значення залежить від програми, яка створює зображення
0882 байтиЗарезервовано; фактичне значення залежить від програми, яка створює зображення
0A104 байтиЗсув, тобто початкова адреса, байта, де можна знайти дані растрового зображення (масив пікселів).

Заголовок DIB (інформаційний заголовок растрового зображення)

Детальна інформація про зображення представлена цим заголовком. На основі цієї інформації буде визначено програму, яка буде використовуватися для відображення зображення на екрані. Усі такі заголовки містять поле DWORD (32-розрядний), що вказує їхній розмір, щоб програма могла легко визначити заголовок, який використовується в зображенні. В основному це пов’язано з тим, що формат DIB зазнав кількох розширень. Нижче наведено заголовок DIB із переліченими полями.

Палітра кольорів

Палітра кольорів BMP — це масив структур, які визначають значення інтенсивності RGB кожного кольору в палітрі кольорів пристрою відображення. Кожен піксель у растрових даних зберігає одне значення, яке використовується як індекс у палітрі кольорів. Інформація про колір, що зберігається в елементі за цим індексом, визначає колір цього пікселя. Наявність кольору у файлі растрового зображення змінюється таким чином:

  • Один, 4 і 8-бітний – очікується, що завжди буде міститися палітра кольорів
  • Шістнадцять, 24 і 32-розрядні - ніколи не містять кольорових палітр
  • Шістнадцяти та 32-розрядні файли BMP – містять значення маски бітових полів замість палітри кольорів

Pixel Storage

Пікселі растрового зображення зберігаються як біти, упаковані в рядки, де розмір кожного рядка округлюється до кратного 4 байтам (32-розрядний DWORD) шляхом доповнення. Загальний обсяг байтів, необхідний для зберігання пікселів зображення, не можна безпосередньо обчислити, просто підрахувавши біти. Оскільки використовується доповнення, необхідний ефект округлення розміру кожного рядка до кратного 4 байтам. Байти заповнення (не обов’язково 0) повинні бути додані до кінця рядків, щоб збільшити довжину рядків до кратної чотирьом байтам. Коли масив пікселів завантажується в пам’ять, кожен рядок повинен починатися з адреси пам’яті, кратної 4.

Зображення фактично описується 32-бітним представленням DWORD масиву пікселів. Зазвичай пікселі зберігаються «знизу вгору», починаючи з лівого нижнього кута, зліва направо, а потім рядок за рядом від низу до верху зображення. Формати пікселів і їхні наслідки перераховані нижче.

  • Формат 1 біт на піксель (1bpp) підтримує 2 різні кольори (наприклад, чорний і білий).
  • Формат 2 біта на піксель (2bpp) підтримує 4 різні кольори та зберігає 4 пікселі на 1 байт, крайній лівий піксель знаходиться у двох старших бітах. Значення кожного пікселя є 2-бітним індексом у таблиці до 4 кольорів.
  • Формат 4 біти на піксель (4bpp) підтримує 16 різних кольорів і зберігає 2 пікселі на 1 байт, причому крайній лівий піксель знаходиться у більш значущому нібле. Значення кожного пікселя є 4-бітним індексом у таблиці до 16 кольорів.
  • Формат 8 біт на піксель (8 біт на піксель) підтримує 256 різних кольорів і зберігає 1 піксель на 1 байт. Кожен байт є індексом у таблиці до 256 кольорів.
  • Формат 16 біт на піксель (16 bpp) підтримує 65536 різних кольорів і зберігає 1 піксель на 2-байтове СЛОВО. Кожне СЛОВО може визначати альфа-, червоний, зелений і синій зразки пікселя.
  • 24-бітний піксельний формат (24 біт на піксель) підтримує 16 777 216 різних кольорів і зберігає значення 1 пікселя на 3 байти. Кожне значення пікселя визначає червоний, зелений і синій зразки пікселя (8.8.8.0.0 в нотації RGBAX). Зокрема, у порядку: синій, зелений і червоний (8 біт на кожну вибірку).
  • Формат 32 біт на піксель (32 біт на піксель) підтримує 4 294 967 296 різних кольорів і зберігає 1 піксель на 4-байтовий DWORD. Кожен DWORD може визначати альфа-, червоний, зелений і синій зразки пікселя.

Посилання

Див. також