Иллюстрированный самоучитель по SVGA

Заголовок файла для Windows

Первые точечные рисунки хранились в аппаратно-зависимом формате DDB (Device Dependent Bitmap). Такое представление было крайне неудобным, и разработчики Windows 3.0 отказались от него. Для нас оно не представляет интереса, поскольку не предназначено для современных видеосистем.

Семейства Windows 3-Х, 9Х и 2000 используют аппаратно-независимый формат DIB (Device independent Bitmap), заимствованный из OS/2 с некоторыми изменениями. Структура заголовка показана в табл. А.1.

Таблица А.1. Заголовок дар-файла для Windows.

Смещение поля Размер в байтах Имя поля Назначение поля
00 (ООН) 2 bfType Метка "ВМ"
02 (02h) 4 bfSize Размер файла в байтах
06 (06h) 2 Reserved Резервное поле
08 (08h) 2 Reserved Резервное поле
10(OAh) 4 BfOffBits Смещение области данных
14(OEh) 4 BiSize Размер области информации
18(12h) 4 BiWidth Ширина рисунка в точках
22(16h) 4 BiHeight Высота рисунка в точках
26(1Ah) 2 Biplanes Количество плоскостей (всегда 1)
28(1Ch) 2 BiBitCnt Количество бит на точку
30(1 Eh) 4 BiCompr Тип сжатия данных
34 (22h) 4 BiSizelmage Размер данных в байтах
38 (26h) 4 biXPels/M Количество точек на метр по оси
42 (2Ah) 4 biYPels/M Количество точек на метр по оси
46 (2Eh) 4 BiClrUsed Количество используемых цветов
50 (32h) 4 BiClrlmprt Количество цветов в палитре

Назначение, содержание и применение основных полей заголовка будет описано в следующих подразделах, здесь мы опишем только три поля, обычно не используемые при выводе изображения на экран.

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

Большинство рисунков получается путем оцифровки рукотворных картинок, фотографий, слайдов, кино или видеокадров. При выводе таких рисунков на печать важно знать размер оригинала. Необходимые для этого данные находятся в полях biXPels/M и biYPels/M, где Pels означает Picture Elements (элемент рисунка или просто точка). Если содержащиеся в них величины умножить на 25.4 и разделить на 1000, то получится разрешающая способность устройства, с помощью которого была оцифрована картинка.

Например, при сканировании с разрешением 300 точек на дюйм по обеим координатам на один метр приходится приблизительно 300-1000/25.4 =11811 точек. Этому числу соответствует код 2Е23h, который и будет храниться в описываемых полях. Учитывая возможные ошибки вычислений, реальная величина может незначительно отличаться от вычисленной.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.