Поделиться через


Типы заголовков растровых рисунков

Растровое изображение имеет четыре основных типа заголовков:

Четыре типа заголовков растровых рисунков отличаются элементом Size , который является первым DWORD в каждой из структур.

Структура BITMAPV5HEADER — это расширенная структура BITMAPV4HEADER , которая является расширенной структурой BITMAPINFOHEADER . Однако BITMAPINFOHEADER и BITMAPCOREHEADER имеют только член Size , общий с другими структурами заголовков растрового изображения.

Форматы BITMAPCOREHEADER и BITMAPV4HEADER заменены форматами BITMAPINFOHEADER и BITMAPV5HEADER соответственно. Форматы BITMAPCOREHEADER и BITMAPV4HEADER представлены для полноты и обратной совместимости.

Формат dib имеет следующий формат (дополнительные сведения см. в разделе Хранилище растровых изображений ):

Таблица цветов описывает, как значения пикселей соответствуют значениям цвета RGB. RGB — это модель для описания цветов, которые создаются при излучаемом свете.

Данные профиля ссылаются либо на имя файла профиля (связанный профиль), либо на фактические биты профиля (внедренный профиль). Формат файла помещает данные профиля в конец файла. Данные профиля помещаются сразу после таблицы цветов (если они есть). Однако если функция получает упакованный DIB, данные профиля поступают после битов растрового изображения, как в формате файла.

Данные профиля будут существовать только для структур BITMAPV5HEADER , где bV5CSType PROFILE_LINKED или PROFILE_EMBEDDED. Для функций, получающих упакованные dib, данные профиля поступают после данных растрового изображения.

Палеттизированное устройство — это любое устройство, которое использует палитры для назначения цветов. Классическим примером палеттизированного устройства является дисплей с 8-разрядной глубиной цвета (т. е. 256 цветов). Отображение в этом режиме использует небольшую таблицу цветов для назначения цветов растровой диаграмме. Цвета в растровом рисунке назначаются ближайшему цвету в палитре, используемой устройством. Палеттизированное устройство не создает оптимальную палитру для отображения растрового изображения; он просто использует все, что находится в текущей палитре. Приложения отвечают за создание палитры и ее выбор в системе. Как правило, растровые рисунки 16, 24 и 32 бит на пиксель (bpp) не содержат таблицы цветов (оптимальные палитры для растрового изображения); в этом случае приложение отвечает за создание оптимальной палитры. Однако растровые изображения 16, 24 и 32 бит/с могут содержать такие оптимальные таблицы цветов для отображения на палеттизированных устройствах; В этом случае приложению просто необходимо создать палитру на основе таблицы цветов, присутствующих в файле растрового изображения.

Растровые изображения размером 1, 4 или 8 бит/с должны иметь таблицу цветов с максимальным размером в зависимости от bpp. Максимальный размер растровых рисунков 1, 4 и 8 бит/с составляет 2 к мощности bpp. Таким образом, растровое изображение длиной 1 бит/с имеет не более двух цветов, 4 битовое изображение имеет не более 16 цветов, а растровое изображение 8 бит/с — не более 256 цветов.

Для растровых рисунков с 16, 24 или 32 бит/с не требуются цветные таблицы, но они могут указывать цвета для палеттизированных устройств. Если таблица цветов присутствует для растрового изображения размером 16, 24 или 32 бит/с, то элемент biClrUsed указывает размер таблицы цветов, и в таблице цветов должно быть столько цветов. Если значение параметра biClrUsed равно нулю, таблица цветов отсутствует.

Красные, зеленые и синие маски битовых полей для BI_BITFIELD растровых рисунков сразу следуют за структурами BITMAPINFOHEADER, BITMAPV4HEADER и BITMAPV5HEADER . Структуры BITMAPV4HEADER и BITMAPV5HEADER содержат дополнительные элементы для красных, зеленых и синих масок следующим образом.

Член Значение
RedMask Цветовая маска, задающая красный компонент каждого пикселя, допустима только в том случае, если для элемента Сжатия задано значение BI_BITFIELDS.
GreenMask Цветовая маска, задающая зеленый компонент каждого пикселя, допустима только в том случае, если для элемента Сжатия задано значение BI_BITFIELDS.
BlueMask Цветовая маска, задающая синий компонент каждого пикселя, допустимая только в том случае, если для элемента Сжатия задано значение BI_BITFIELDS.

 

Если члену biCompressionобъекта BITMAPINFOHEADER присвоено значение BI_BITFIELDS а функция получает аргумент типа LPBITMAPINFO, цветовые маски сразу же следуют за заголовком. Таблица цветов, если она есть, будет соответствовать цветовым маскам. Растровые изображения BITMAPCOREHEADER не поддерживают цветовые маски.

По умолчанию данные растрового изображения в формате снизу вверх. Снизу вверх означает, что первая строка сканирования в данных растрового изображения является последней отображаемой строкой сканирования. Например,0-й пиксель0-й линии сканирования данных растрового изображения 10 на 10 пикселей будет0-м пикселем9-й линии сканирования отображаемого или печатного изображения. Растровые изображения в формате RLE и BITMAPCOREHEADER не могут быть растровыми рисунками сверху вниз. Линии сканирования выравниваются по DWORD , за исключением растровых изображений, сжатых RLE. Они должны быть заполнены для ширины строк сканирования в байтах, которые не могут быть равномерно разделены на четыре, за исключением сжатых RLE растровых изображений. Например, растровое изображение размером 10 на 10 пикселей размером 24 бит/с будет иметь два байта заполнения в конце каждой строки сканирования.