Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метод_курс_кэм_new.doc
Скачиваний:
14
Добавлен:
06.02.2016
Размер:
653.82 Кб
Скачать

1 Формат файла bmp

Файл BMP может содержать изображения, размером 2**32х 2**32 пикселей и глубину цвета от 1 до 24 бит.

Основными элементами файла являются: - заголовок; - палитра (если нужна); - изображение.

1.1 Заголовок файла

Файл начинается заголовком. Структура заголовка представлена ниже: TBMHeader=record Sign:integer; {Подпись} Size:longint; {Длина файла} Reserv1:integer; {-} Reserv2:integer; {-} Lock:longint; {Местонахождение растрового массива} HeadLen:longint; {Длина заголовка} Width:longint; {Ширина изображения} Height:longint; {Высота изображения} PlNum:integer; {Количество цветовых плоскостей} BitPix:integer; {Бит/пиксель} Compr:longint; {Метод сжатия} MassLen:longint; {Длинна растрового массива} HorRazr:longint; {Горизонтальное расширение} VerRazr:longint; {Вертикальное расширение} ColNum:longint; {Число цветов изображения} MainColNum:longint; {Число основных цветов} end;

Рассмотрим подробнее структуру заголовка файла BMP.

Sign - подпись, говорящая о том, что это файл BMP. Поле всегда имеет значение 'BM' = 424Dh. (Вернее было бы сказать, что несовпадение этой подписи с 'BM' говорит о том, что это не BMP-файл.)

Size - размер файла. Позволяет судить о целостности данных файла.

Reserv1,Reserv2 - Резерв Поля имеют нулевое значение, однако, значения программой чтения не проверяются.

Lock - Местонахождение растрового массива. Смещение данных изображения относительно начала файла.

HeadLen - Длина заголовка в байтах. Во многих источниках принято отделять все поля начиная с Sing и до Lock включительно от остальных полей заголовка и называть первые пять полей "Заголовком файла", а остальные - "Заголовком изображения". "Заголовком файла" - всегда 16 байт. В поле HeadLen указан размер "Заголовком изображения" и в большинстве случаев содержит значение 28h (40).

Width - Ширина изображения в пикселях.

Height - Высота изображения в пикселях.

PlNum - Количество цветовых плоскостей изображения.

BitPix - бит на пиксель. По этому полю определяется количество цветов.

Compr - Поле это указывает тип сжатия информации. 0 - без сжатия. 1 – RLE алгоритм.

MassLen - Длина растрового массива.

HorRazr,VerRazr - разрешение горизонтальное и вертикальное.

ColNum - количество цветов изображения.

MainColNum - количество "главных" цветов. Если вдруг программа просмотра обнаружила, что она не может отобразить 256 цветов (а изображение, предположим, содержит именно столько), ей следует отображать максимальное количество "главных" цветов, информация о которых содержится в первых элементах палитры.

1.2 Палитра

Палитра расположена сразу за заголовком. Её наличие определяется количеством цветов в изображении. Если их больше 256 - палитра не хранится (пиксели представлены триплетами прямо в растровом массиве). На каждый цвет палитра отводит 4 байта (R,G,B,Rs) - Red,Green,Blue,Reserv. Reserv всегда имеет значение 0.

1.3 Чтение BMP файла

Размер каждой строки растровой матрицы выровнен по 32-х битной границе. Для определения этого размера используется очевидная формула – size = (4-(Width mod 4)) and 3; Но следует помнить, что: 1.изображение в файле BMP храниться начиная с нижней строки. 2. При 256 цветах 1 байт = 1 пиксель, при 16 - 1 байт = 2 пикселя, при 2 - 1 байт = 8 пикселей.