- •Методические указания и задания
- •Методические указания к выполнению курсовой работы
- •1 Формат файла bmp
- •2 Формат файла pcx
- •Критические блоки
- •Заголовочный блок
- •Палитра
- •Блок данных изображения
- •Замыкающий блок изображения
- •Вспомогательные блоки
- •Данные изображения
- •Альфа канал
- •Задание к курсовой работе
- •Содержание
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 пикселей.