Сжатие точечного рисунка

Windows поддерживает форматы сжатия точечного рисунка, которые определяют их цвета с 8-ю или 4-мя битами на пиксель (bpp). Сжатие уменьшает пространство для сохранения данных на диске и в памяти, необходимое для точечного рисунка.

Сжатие формируют некоторые из нижеперечисленных имен членов в растровых информационных структурах заголовка для различных платформ. В обсуждении, которое следует ниже, сжатие используется, чтобы обозначить все эти варианты.

 

Операционная систиема Сжатие
Windows NT 3.51 и ранее biCompression
Windows 95 и Windows NT 4.0 bV4Compression
Windows 98/Me и Windows 2000 bV5Compression

Когда член  Compression растровой информационной структуры заголовка равен BI_RLE8,  чтобы сжать 8-разрядный точечный рисунок, используется  формат кодирования длины серии (RLE). Этот формат может сжимать в абсолютном режиме или режиме кодирования. Оба режима могут встретиться где-нибудь в одном и том же точечном рисунке:

 

Значение Предназначение
0 Конец строки.
1 Конец рисунка.
2 Кусочек. 2 байта, следующие за переходом содержат значения без знака, которые указывают горизонтальное и вертикальное смещение следующего пикселя от текущей позиции.
 

Пример ниже показывает шестнадцатеричные значения 8-разрядного сжатого точечного рисунка:

03 04 05 06 00 03 45 56 67 00 02 78 00 02 05 01 
02 78 00 00 09 1E 00 01 

Точечный рисунок раскрывается как указано ниже (значения с двумя цифрами обозначают индекс цвета для  взятого пикселя):

04 04 04 
06 06 06 06 06 
45 56 67 
78 78 
переместим текущую позицию на 5 вправо и на 1 вниз 
78 78 
конец строки 
1E 1E 1E 1E 1E 1E 1E 1E 1E 
конец точечного рисунка RLE 

Когда член структуры Compression равен BI_RLE4, точечный рисунок сжимается, при помощи использования формата кодирования длины серий (RLE) для 4-х битового точечного рисунка, который также использует кодируемый и абсолютные режимы:

Пример ниже показывает шестнадцатеричные значения 4-разрядного сжатого точечного рисунка:

03 04 05 06 00 06 45 56 67 00 04 78 00 02 05 01 
04 78 00 00 09 1E 00 01 

Точечный рисунок развертывается как показано ниже (одноцифровое значение представляет индекс цвета для единственного пикселя):

0 4 0 
0 6 0 6 0 
4 5 5 6 6 7 
7 8 7 8 
переместим текущую позицию на 5 вправо и на 1 вниз 
7 8 7 8 
конец строки
1 E 1 E 1 E 1 E 1 
конец точечного рисунка RLE 

Назад в оглавление
На главную страницу

Hosted by uCoz