Формат BMP
Home 
Немного о себе 
Тексты 
Мой Тамбов 
Мои Фотки 
Ссылки 
Пишите мне 
Гостевуха 

ICQ:img2.gif277457745

vasy_ok@mail.ru

 

[Программирование сокетов][Администрирование][Язык HTML,JavaScript и WWW][Спутниковая навигация][Формат BMP][Формат TIFF]

 

Описание формата BMP для Window 3.0 (DIB)

 

Основным отличием файлов нового формата (DIB) - Device Independent Bitmap (аппаратно-независимый битовый образ) является то, что в них используется кодировка цветов с одной битовой плос­костью.

Файлы битовых образов нового формата начинаются со структуры BITMAPFILEHEADER:

typedef struct tagBITMAPFILEHEADER

             word       bfType;                 //тип файла (для битового образа - BM)

             dword    bfSize;                   //размер файла в dword

             word       bfReserved1;        //не используется

             word       bfReserved2;        //не используется

dword               bfOffbits;              //смещение данных битового образа от

                                                     //заголовка в байтах

 

Непосредственно за ней располагается структура BITMAPINFO, со­держащая всю информацию о битовом образе. Она делится на две час­ти: структуру BITMAPINFOHEADER, описывающей размеры и цветовой формат битового образа, и массив структур RGBQUAD, определяющей цветовую палитру:

typedef struct tagBITMAPINFO

BITMAPINFOHEADER          bmiHeader;

RGBQUAD                 bmiColors[1];

 

typedef struct tagBITMAPINFOHEADER

             dword    biSize;                    //число байт, занимаемых структурой

                                                     //BITMAPINFOHEADER

dword               biWidth;               //ширина битового образа в пикселах

dword               biHeight;               //высота битового образа в пикселах

             word       biPlanes;               //число битовых плоскостей устройства

             word       biBitCount;           //число битов на пиксель

             dword    biCompression;   //тип сжатия

             dword    biSizeImage;         //размер картинки в байтах

             dword    biXPelsPerMeter;//горизонтальное разрешение устройства,

                                                     //пиксел/м

             dword    biYPelPerMeter;  //вертикальное разрешение устройства,

                                                     //пиксел/м

             dword    biClrUsed;            //число используемых цветов

             dword    biClrImportant; //число "важных" цветов

 BITMAPINFOHEADER;

Более подробно:

biSize - обычно используется для облегчения доступа к таблице цветов.

biPlanes - определяет число битовых плоскостей; однако, по­скольку цвет кодируется последовательными битами, это число всег­да равно 1.

biBitCount - этим полем определяется число цветов, используе­мых битовым образом. В зависимости от способа кодирования, может принимать значения:

1 - битовый образ монохромный, и таблица цветов должна содер­жать два элемента. Каждый бит в массиве данных кодирует один пик­сел. Если значение бита - 0, то пиксел становится первым цветом таблицы; если - 1, пиксел становится вторым цветом таблицы.

4 - битовый образ имеет максимум 16 цветов, и массив bmiColors (таблица цветов) имеет до 16 элементов. Цвет каждого пиксела оп­ределяется по таблице цветов при помощи четырехбитного индекса. Например, если первый байт данных имеет значение 3Ah, то при отображении битового образа цвет первого пиксела определяет чет­вертый элемент таблицы цветов, а цвет второго - одиннадцатый.

8 - битовый образ имеет максимум 256 цветов, и таблица цветов имеет до 256 элементов. Каждый байт массива данных определяет цвет одного пиксела.

24 - битовый образ имеет максимум 2 в 24-й степени цветов. Таблица цветов пуста, а цвет пикселов определяется пакетами из трех байтов, описывающими цветовые интенсивности красного, зеле­ного и голубого цветов.

biCompression - тип сжатия. Может принимать значения:

             BI_RGB - сжатие отсутствует;

             BI_RLE8 - сжатие для формата 8 бит на пиксел;

             BI_RLE4 - сжатие для формата 4 бита на пиксел.

biXPelsPerMeter и biYPelsPerMeter - могут использоваться для выбора из списка ресурсов пиктограммы, наиболее подходящей для данного устройства.

biClrUsed - число цветов, используемых данныи битовым образом. Если 0, то используются все цвета палитры (указанные в массиве bmiColors).

biClrImportant - используется для управления алгоритмом отоб­ражения цветов. Так, если четыре различных приложения отображают на экране по одному битовому образу с 75 цветами каждый, то адап­тер, выводящий 256 цветов одновременно, не сможет полностью ау­тентично отобразить на экране все 4 картинки. В этом случае ис­пользуется механизм замены цветов - ищется битовый образ с наи­меньшим приоритетом и его "лишние" цвета заменяются наиболее под­ходящими.

typedef struct tagRGBQUAD

             byte        rgbRed;                 //интенсивность красного

             byte        rgbGreen;              //интенсивность зеленого

             byte        rgbBlue;                //интенсивность голубого

             byte        rgbRserved;         //не используется

       RGBQUAD;

После того, как все параметры битового образа определены, в файле идут сами скан-строки битовой плоскости, причем первой скан-строкой в формате DIB считается нижняя скан-строка (т.е. на­чало координат находится в левом нижнем углу изображения).

Скан-строки выровнены по 32-битной границе - dword !!!

[Home][Немного о себе][Тексты][Мой Тамбов][Мои Фотки][Ссылки][Пишите мне][Гостевуха]

Copyright(c) 2004 Vasy_ok. All rights reserved.

 

Hosted by uCoz