Читайте также: |
|
BMP-файл складається з чотирьох частин:
· Заголовок файлу (BITMAPFILEHEADER)
· Заголовок зображення (BITMAPINFOHEADER, може бути відсутнім). BITMAPV4HEADER (Win95, NT4.0) BITMAPV5HEADER (Win98/Me, 2000/XP)
· Палітра (може бути відсутня)
· Власне зображення
BITMAPFILEHEADER [8]:
Ця структура містить інформацію про тип, розмір і подання даних у файлі.
Тип WORD повинен мати розмір 16 біт, типи DWORD і LONG – 32 біта, тип LONG – знаковий, порядок байтів мається на увазі little endian[9].
· 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).
3.3 Складнощі у використанні
Складнощі виникають у трьох випадках:
1. Якщо зображення розташоване «ногами вгору» (перший ряд пікселів на місці останнього) то зчитувати зображення потрібно або з кінця до початку, або з початку до кінця але записувати у кінець масиву.
2. Якщо зображення не 32-бітне, то є можливість появи доповнення - кожен рядок зображення доповнюється нулями до довжини, кратній чотирьом байтам, яке треба «перескакувати».
3. Якщо зображення стиснене – це вже проблема у використанні і не тільки зображення формату BMP.
Але ці проблеми досить легко вирішуються за при використанні бібліотек з відкритим вихідним кодом як, наприклад, EasyBMP. Адже «навіщо винаходити велосипед», якщо від стоїть у тебе на задньому дворі.
Дата добавления: 2015-07-20; просмотров: 54 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Висновки | | | Обрання мови програмування |