Хранение графики в Windows.


Основное средство графики в Windows – это Paint Brush. Под него был разработан формат BMP. Существует много версий, но они мало конфликтуют друг с другом.

В литературе даже не приводится разница между версиями этих форматов. Файл BMP состоит из трёх частей:

1. Заголовок BITMAP FILE.

2. Информационная часть BITMAP INFO.

3. Данные BITMAP.

 

1. Структура заголовка. Он состоит из пяти записей.

 

Смещение Длина, байт Описание
Здесь записано “BM” – это признак того, что файл в формате BMP.
Длина файла в байтах.
Резервная запись
Резервная запись
Указывает на смещение до начала области данных.

 

Сама длина заголовка постоянная.

2. Он описывает параметры изображения. Имеет переменную длину. Имеет переменную длину.

Запись 1. Длина 4 байта. Длина данной части в байтах.

Запись 2. Длина 4 байта. Ширина рисунка в пикселах.

Запись 3. Длина 4 байта. Высота рисунка в пикселах.

Запись 4. Длина 2 байта. Признак разбиения на битовые плоскости.

Запись 5. Длина 2 байта. Количество бит на пиксел.

Запись 6. Кодируется тип сжатия данных.

Запись 7. Длина 4 байта. Размер изображения в байтах.

Запись 8. Разрешение по горизонтали в пикселах.

Запись 9. Разрешение по вертикали в пикселах.

Запись 10. Количество используемых цветов и запись количества основных типов.

Следующая запись будет начинаться со смещения 36h. Начиная с этой записи описывается палитры. Количество цветов в поле со смещением 2Eh (обозначим n), тогда длина 4×n.

Первый байт – интенсивность синего.

Второй байт – интенсивность зелёного.

Третий байт – интенсивность красного.

Четвёртый байт – резервный, заполнен нулями.

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

3. Само изображение. Разбито на строчки и столбцы.

Первое ограничение – разрывы строк не допускаются. Если строка в изображении не участвует, то её нужно заполнить нулями.

Второе нестандартное – то, что хранится оно с левого нижнего угла построчно.

Метод сжатия RLE4 или RLE8. Полностью соответствуют ранее рассмотренному. Поле со смещением 1Сh задаёт количество бит на пиксел. В нём запсианы стандартные цифры.

1) Если записана 1, то это чёрно-белое изображение. Тогда 1 – заполнение первым цветом палитры, а 0 – заполнение вторым цветом палитры.

2) Если записана 4, то это 16-цветное изображение. В палитре реальное описание состоит из 16 полей по 4 байта. Чтобы сократить количество пустых заполнений нулями, то каждый байт записи палитры трактуется следующим образом:

Одна запись – это запись двух точек, причём старшие полбайта принадлежат дальней точке, а младшие полбайта принадлежат первой точке.

Пример.

2 – цвет записан вторым в палитре и принадлежит он второй точке.

5 – цвет записан пятым в палитре и принадлежит первой точке.

3) Если записано 8, то используется 256 цветов. Использован 1 байт на точку. Палитра состоит из 256 записей, каждое поле по 4 байта.

4) Если записано 24, то 16777216 цветов. Чтобы записать такую палитру, надо много памяти, но поступают по другому. палитра кодируется в области данных. В резервный байт вводят интенсивность. При этом длина записи фактически не увеличивается.

 

Сжатие. Там, где использовано сжатие:

0 – не упаковано.

1 – RLE8

2 – RLE4

Таким образом хранятся любой сложности растровые рисунки. Автоматического сжатия ни Windows, ни Paint Brush не производят. Чтобы использовать сжатие, надо использовать специальные команды при сохранении файла. Ламеры хранят рисунки BMP неупакованными.

 

Графика ещё хранится в специфических форматах. Стартовые заставки хранятся в формате RLE. По своей сути ничем не отличающегося от формата BMP со сжатием RLE4, так как для заставок не требуется большее количество цветов. Формируются в такой формат программой WinGIF.

 

Формат ICO.

Особый формат для хранения пиктограмм. Отличие таких изображений от других:

1. Их никогда не уплотняют.

2. В таком формате содержится 2 битовых карты, то есть иконка должна быть дублирована для цветного и монохромного.

Файл ICO имеет следующую структуру:

1. Запись длиной 2 байта. Заполнена нулями.

2. Запись длиной 2 байта. Имеет значение 1 и говорит о том, что это пиктограмма.

3. Запись длиной 2 байта. Количество изображений в файле. Можно хранить несколько пиктограмм. Если стоит 1, то одно изображение в цветном и в чёрно-белом.

4. Запись. Ширина пиктограммы в пикселах.

5. Запись. Высота пиктограммы в пикселах.

6. Запись (1 байт). Количество цветов.

7. Имеется 5 резервных байт.

8. Запись 4 байта. Pixel Array. Массив пикселов.

9. Запись 4 байта. Смещение в байтах до конкретного изображения.

10. Кусок в 4 байта для дополнительных данных.

На описание таблицы цветов используется 40 байт. Их 16, каждая по 4 байта. Палитра заложена избыточная. Для разнообразия выделяется 16 цветов. Далее идёт

512 байт – XOR-описание цветной палитры.

128 байт – AND-описание монохромной пиктограммы.

 



Дата добавления: 2016-07-27; просмотров: 1310;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.