Рекламный блок
Тема № 2 Форматы графических файлов
Страница 2
2.2 Описание формата PCX
Файлы изображений, которые используются в продуктах семейства PC Paintbrush и FRIEZE, были разработаны фирмой Zsoft. Расширение файла DOS - PCX, тип формата растровый. Открывать или импортировать файлы PCX могут почти все графические приложения для персональных компьютеров. Цветовые возможности 1, 2, 4, 8 или 24- битовый цвет, никаких оттенков серого. Всегда применяется сжатие ROB. У этого формата есть ряд недостатков: 1) не поддерживает изображения с оттенками серого или таблицы коррекции шкалы серого; 2) не поддерживает цвета CMYK или другие системы отличные от RGB; 3) многочисленные варианты, особенно при работе с цветами, могут делать работу с файлом невозможным; 4) неудобная схема сжатия в действительности может увеличивать размеры некоторых файлов.
Среди положительных сторон формата РСХ можно назвать то, что он хорош для изображений, которые: 1)создают ограниченную палитру цветов (лучше всего 16 или 256); 2) не являются изображениями отсканированными или фотографиями, которые плохо сжимаются; 3)должны быть читаемыми всеми приложениями персонального компьютера.
Файлы изображения PCX начинается с заголовка длиной 128 байт. Затем идут закодированные графические данные. При кодировании используется простой алгоритм, основанный на методе длинных серий. Если в файле запоминается несколько цветовых слоев, каждая строка изображения запоминается по цветовым слоям. Согласно документации Zsoft, это выполняется по приведенной ниже схеме (R - красный слой, G - зеленый слой, B - синий слой, I - слой интенсивности)
Строка изображения 0:
RRR...
GGG...
BBB...
III...
Строка изображения 1:
RRR...
GGG...
BBB...
III...
(и т.д.)
Замечание о некорректности документа. Запоминание по слоям проводится, как правило, для 16-цветных изображений EGA. При стандартной палитре EGA, которая устанавливается по умолчанию BIOS'ом, нулевой слой видео памяти содержит СИНЮЮ компоненту цвета, а не красную. Если же палитра отлична от стандартной, то говорить о том, что слои видео памяти, соотносятся с компонентами цвета вообще затруднительно.
Метод кодирования состоит в следующем:
ДЛЯ каждого байта X, прочитанного из файла. ЕСЛИ оба старших бита X равны 1, то <повторитель> = значению, хранящемуся в 6 младших битах X <данные> = находятся в следующем байте за X. ИНАЧЕ <повторитель> = 1 <данные> = X
Поскольку для насыщения данного алгоритма требуется в среднем 25% неповторяющихся данных и, по меньшей мере, наличие смещения между повторяющимися данными, то размер получаемогофайла, как правило, оказывается приемлемым.
Таблица 2. Формат заголовка PCX
Смещение | Обозначение | Длина | Описание / комментарий |
0 | Manufacturer | 1 | Постоянный флаг 10 = ZSoft .PCX |
1 | Version | 1 | Информация о версии: 0 = Версия 2.5 2 = Версия 2.8 с информацией о палитре 3 = Версия 2.8 без информации о палитре 5 = Версия 3.0 |
2 | Encoding | 1 | 1 = PCX кодирование длинными сериями |
3 | Bits per pixel | 1 | Число бит на пиксел в слое |
4 | Window | 8 | Размеры изображения (Xmin, Ymin) – (Xmax, Ymax) в пикселах включительно |
12 | Hres | 2 | Горизонтальное разрешение создающего устройства |
14 | Vres | 2 | Вертикальное разрешение создающего устройства |
16 | Colormap | 48 | Набор цветовой палитры (см. далее текст) |
64 | Reserved | 1 | |
65 | NPlanes | 1 | Число цветовых слоев |
66 | Bytes per Line | 2 | Число байт на строку в цветовом слое (для PCX-файлов всегда должно быть четным) |
68 | Palette Info | 2 | Как интерпретировать палитру: 1 = цветная/черно-белая, 2 = градации серого |
70 | Filler | 58 | Заполняется нулями до конца заголовка |
Все переменные длины 2 являются целыми.