Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПГИ / Лекции.doc
Скачиваний:
59
Добавлен:
11.04.2015
Размер:
640.51 Кб
Скачать

Описание формата pcx

Файлы изображений, которые используются в продуктах семейства PC Paintbrush и FRIEZE, были разработаны фирмой Zsoft. Открывать или импортировать файлы PCX могут почти все графические приложения для персональных компьютеров. Цветовые возможности 1, 2, 4, 8 или 24- битовый цвет. Всегда применяется сжатие RLE.

Файлы изображения PCX начинается с заголовка длиной 128 байт. Затем идут закодированные графические данные. При кодировании используется простой алгоритм, основанный на методе длинных серий. Если в файле запоминается несколько цветовых слоев, каждая строка изображения запоминается по цветовым слоям

Метод кодирования состоит в следующем: ДЛЯ каждого байта X, прочитанного из файла. ЕСЛИ оба старших бита X равны 1, то <повторитель> = значению, хранящемуся в 6 младших битах X <данные> = находятся в следующем байте за X. ИНАЧЕ <повторитель> = 1 <данные> = X Поскольку для насыщения данного алгоритма требуется в среднем 25% неповторяющихся данных и, по меньшей мере, наличие смещения между повторяющимися данными, то размер получаемого файла, как правило, оказывается приемлемым.

Формат заголовка PCX

typedef struct TPCXHeaderStruct

{

unsigned char ID; //Постоянный флаг 10 = ZSoft .PCX

unsigned char Version; // Информация о версии

unsigned char Coding; //1 = PCX кодирование RLE

unsigned char BitPerPixel; // Число бит на пиксел

unsigned int XMin; // Размеры изображения

unsigned int YMin;

unsigned int XMax;

unsigned int YMax;

unsigned int HRes; // Горизонтальное разрешение создающего устройства

unsigned int VRes; // Вертикальное разрешение создающего устройства

unsigned char Palette[48]; // Набор цветовой палитры (для 16-цветного изображения)

unsigned char Reserved;

unsigned char Planes; // Число цветовых слоев

unsigned int BytePerLine; // Число байт на строку в цветовом слое (для PCX-файлов всегда должно быть четным)

unsigned int PaletteInfo; // Как интерпретировать палитру: 1 = цветная/черно-белая, 2 = градации серого

unsigned int HScreenSize;

unsigned int VScreenSize;

unsigned char Filler[54]; // Заполняется нулями до конца заголовка

} TPCXHeader;

Смещение

Обозначение

Длина

Описание / комментарий

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 являются целыми.

Соседние файлы в папке ПГИ