1. Заголовок файла растровой графики (14 байт)
1.1. Сигнатура файла BMP (2 байт)
1.2. Размер файла (4 байт)
1.3. Не используется (2 байт)
1.4. Не используется (2 байт)
1.5. Местонахождение данных растрового массива (4 байт)
2. Информационный заголовок растрового массива (40 байт)
2.1. Длина этого заголовка (4 байт)
2.2. Ширина изображения (4 байт)
2.3. Высота изображения (4 байт)
2.4. Число цветовых плоскостей (2 байт)
2.5. Бит/пиксел (2 байт)
2.6. Метод сжатия (4 байт)
2.7. Длина растрового массива (4 байт)
2.8. Горизонтальное разрешение (4 байт)
2.9. Вертикальное разрешение (4 байт)
2.10. Число цветов изображения (4 байт)
2.11. Число основных цветов (4 байт)
3. Таблица цветов (длина изменяется от 8 до 1024 байт)
4. Собственно данные растрового массива (длина переменная)
1. Первые 14 байтов BMP-файла составляют его заголовок. Заголовок файла содержит три значения: буквы BM, которые говорят о том, что графический файл имеет BMP формат, число, означающее размер файла и число, указывающее на то, где находятся растровые данные. Последнее число равно количеству байтов от начала файла. Еще два поля в заголовке файла зарезервированы для будущих нужд и обычно содержат нули.
2. Необходимые неграфические данные упрятаны в информационном заголовке. Поля в информационном заголовке в числе прочих содержат его размер (40 байтов в BMP-файлах для Windows), высоту и ширину изображения в пикселах, и количество битов на пиксел. В зависимости от способа кодирования поле бит на пиксел, может принимать значения:
1 - битовый образ монохромный, и таблица цветов должна содержать два элемента. Каждый бит в массиве данных кодирует один пиксел. Если значение бита - 0, то пиксел становится первым цветом таблицы; если - 1, пиксел становится вторым цветом таблицы.
4 - битовый образ имеет максимум 16 цветов, и таблица цветов имеет до 16 элементов. Цвет каждого пиксела определяется по таблице цветов при помощи четырехбитного индекса. Например, если первый байт данных имеет значение 3Ah, то при отображении битового образа цвет первого пиксела определяет четвертый элемент таблицы цветов, а цвет второго - одиннадцатый.
8 - битовый образ имеет максимум 256 цветов, и таблица цветов имеет до 256 элементов. Каждый байт массива данных определяет цвет одного пиксела.
24 - битовый образ имеет максимум 2 в 24-й степени цветов. Таблица цветов пуста, а цвет пикселов определяется пакетами из трех байтов, описывающими цветовые интенсивности красного, зеленого и голубого цветов.
3. Цветовая таблица содержит 256 полей по 4 байта. первый байт в каждом поле отвечает за синюю компоненту цвета, второй за зеленую и третий - за красную. Четвертый байт не используется и обычно устанавливается в 0. Если первые три значения в цветовой таблице 0, 192 и 192, это значит, что нулевой номер соответствует желтому цвету средней интенсивности (смесь зеленого и красного). В цветовой таблице определены все цвета, использующиеся в изображении.
4. Остальная часть файла содержит значения пикселов. Последовательность байтов соответствует порядку пикселов в изображении: слева направо, начиная с нижней строки изображения. Значение каждого байта есть номер цвета в цветовой таблице. Формат собственно данных растрового массива в файле BMP зависит от числа бит, используемых для кодирования данных о цвете каждого пиксела. При 256-цветном изображении каждый пиксел в той части файла, где содержатся собственно данные растрового массива, описывается одним байтом (8 бит). Это описание пиксела не представляет значений цветов RGB, а служит указателем для входа в таблицу цветов файла. Таким образом, если в качестве первого значения цвета RGB в таблице цветов файла BMP хранится R/G/B=255/0/0, то значению пиксела 0 в растровом массиве будет поставлен в соответствие ярко-красный цвет. Значения пикселов хранятся в порядке их расположения слева направо, начиная (как правило) с нижней строки изображения. Таким образом, в 256-цветном BMP-файле первый байт данных растрового массива представляет собой индекс для цвета пиксела, находящегося в нижнем левом углу изображения; второй байт представляет индекс для цвета соседнего справа пиксела и т. д. Если число байт в каждой строке нечетно, то к каждой строке добавляется дополнительный байт, чтобы выровнять данные растрового массива по 16-бит границам.
Не все файлы BMP имеют структуру, подобную показанной на схеме. Например, файлы BMP с глубиной 16 и 24 бит/пиксел не имеют таблиц цветов; в этих файлах значения пикселов растрового массива непосредственно характеризуют значения цветов RGB. Также могут различаться внутренние форматы хранения отдельных разделов файла. Например, информация растрового массива в некоторых 16 и 256-цветных BMP-файлах может сжиматься посредством алгоритма RLE, который заменяет последовательности идентичных пикселов изображения на лексемы, определяющие число пикселов в последовательности и их цвет. В Windows допускается работа с BMP-файлами стиля OS/2, в которых используются различные форматы информационного заголовка растрового массива и таблицы цветов.
Описание программы.
После запуска программы PCX_BMP.EXE <имя графического файла> стандартная функция Fnsplit разбивает полное имя файла на 4 части. Что дает возможность передать файлы с расширениями PCX и BMP на обработку функциям вывода графических файлов на экран (show_pcx и show_bmp).
Дата: 2019-12-10, просмотров: 201.