Как преобразовать PCX файл в PDF файл. Формат PCX (расширение PCX) Почему я не могу открыть файл PCX

Графический формат PCX

В индустрии компьютерной графики существует так много стандартов, что само слово «стандарт» уже потеряло свой первоначальный смысл. Сегодня существует несколько наиболее известных стандартов: PCX, GIF, RGB, TGA, TIF и многие другие. Нам интересен формат PCX потому, что сегодня он является самым распространенным.

Файл в формате PCX представляет собой закодированное представление изображения. Кодирование необходимо для уменьшения размера файла, поскольку только один образ 320х200 пикселей уже займет 64К памяти. Рисованные объекты обладают большой цветовой избыточностью, и это обстоятельство используется для сжатия изображения.

Примечание

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

Давайте посмотрим на рисунок 5.5 (файл CH29\WARINTR2.PCX на дискете). Это копия экрана из игры Warlock. Как вы можете заметить, там не слишком много цветов. Более того, на нем присутствует множество больших, одинаково окрашенных областей.

Как правило, в экранных изображениях используется лишь ограниченное число цветов. Так почему бы не подсчитать количество пикселей одинакового цвета и не сохранить их как целые группы, вместе с позицией и цветом. Это можно сделать. В общем, подобная технология, правда, в несколько усовершен-ствованном виде, и применена в PCX-формате. Для сжатия информации этот формат использует так называемое RLE-кодирование. При этом изображение обрабатывается построчно без учета расположения пикселей по вертикали.

Посмотрите на рисунок 5.6. Преобразование экранного файла в PCX-формат происходит следующим образом; просматривается очередная строка изображения, и если это возможно, сжимается. Сжатие выполняется в том случае, если найдена последовательность пикселей одинакового цвета. При этом сохраняется количество повторений пикселей и значение их цвета. Повторяется это до тех пор, пока все изображение не окажется сжатым.

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

Файл формата PCX состоит из трех секций:

    Первая секция PCX-файла длиной 128 байт содержит различную служеб-ную информацию;

    Вторая секция - это данные сжатого образа, которые могут оказаться любой длины;

    Третья секция размером в 768 байт содержит цветовую палитру, если она есть. В нашем случае она будет присутствовать, поскольку мы используем 256-цветный режим 13h. Эти 768 байт хранят значения RGB от 0 до 255.

Суммируя вышесказанное, можно нарисовать структуру PCX-файла (рис. 5.7).

Получение информации из заголовка несложно: достаточно прочитать первые 128 байт и отформатировать их в соответствии со структурой, представленной в Листинге 5-9.

Листинг 5.9. Структура заголовка PCX-файла.

typedef struct pcx_header_typ

char manufacturer; // всегда 10

char version; // 0 - версия 2.5 Paintbrush

// 2 - версия 2.8 с палитрой

// 3 - версия 2.8 без палитры

// 5 - версия 3.0 или старше

char encoding; // всегда 1 - RLE кодирование

char bits_per_pixel; // количество бит на пиксель

// для нашего случая – 8

int x,y; // координаты верхнего левого угла изображения

int width,height; // размеры изображения

int horz_res; // количество пикселей по горизонтали

int vert_res; // количество пикселей по вертикали

char ega_palette; // EGA-палитра. Ее можно игнорировать,

char reserved; // ничего значимого

char num_color_planes; // количество цветовых плоскостей

//в изображении

int bytes_per_line; // количество байт на одну строку

int palette_type; // не беспокойтесь об этом

} pcx_header, *pcx_header_ptr;

Последнюю часть PCX-файла также довольно легко обработать:

    Необходимо установить указатель на конец файла;

    Передвинуться вверх на 768 байт;

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

    Если код прочитанного байта принадлежит множеству 192..255, то мы вычитаем из него 192 и используем полученный результат, как количество повторений следующего байта;

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

Если вы достаточно внимательны, то можете спросить: «А как же быть с пикселями, имеющими значения от 192 до 255? Интерпретируются ли они как RLE-цепочки?» Да, и гениальное решение этого вопроса состоит в том, что такие значения кодируются не одним, а двумя байтами. Например, если требуется поместить в файл значение 200, то сначала нужно записать число 193 (192-1) как количество повторений, а потом - 200. Посмотрим на рисунок 5.8, чтобы увидеть пример декомпрессии.

Теперь настало время написать программу, реализующую чтение файл формата PCX. Она получилась весьма неплохой. Листинг 5.10 даст вам возможность убедиться в этом самостоятельно.

Листинг 5.10. Программа чтения файла формата PCX.

// размеры экрана

#define SCREEN_WIDTH 320

#define SCREEN_HEIGHT 200

// структура для хранения данных PCX файла

typedef struct pcx_picture_typ

pcx_header header; // заголовок файла (длина 128 байт)

RGB_color palette; // палитра

char far *buffer; // буфер для размещения изображения

// после декомпрессии

} pcx_picture, *pcx_picture_ptr;

void PCX Load(char *filename,

pcx_picture_ptr image,int enable_palette)

// функция загружает данные из PCX-файла в структуру pcx picture

// после декомпрессии байты изображения помещаются в буфер.

// Отдельные элементы изображения выделяются позднее. Также

// загружается палитра и заголовок

int num_bytes,index;

unsigned char data;

char far *temp_buffer;

// открыть файл

fp = fopen(filename,"rb");

// загрузить заголовок

temp_buffer = (char far*)image;

for (index=0; index

temp_buffer = getc(fp);

} // конец цикла for

// загрузить данные и декодировать их в буфере

while (count<=SCREEN_WIDTH * SCREEN_HEIGHT}

// получить первую часть данных

data = getc(fp);

if (data>=192 &&data<=255)

// подсчитываем, сколько байт сжато

num_bytes = data-192;

//читаем байт цвета

data = getc(fp);

// повторяем байты в буфере num_bytes раз

while(num_bytes-->0)

image->buffer = data;

} // конец цикла while

} // конец оператора if

// помещаем данные в следующую позицию буфера

image->buffer = data;

} // конец оператора else

} // конец чтения байт изображения

// перейти в позицию, не доходя 768 байт от конца файла

fseek(fp,-768L,SEEK_END);

// читаем палитру и загружаем ее в регистры VGA

for (index=0; index<256; index++)

// красная составляющая

image->palette.red = (getc(fp) >> 2);

// зеленая составляющая

image->palette.green = (getc(fp) >> 2);

// синяя составляющая

image->palette.blue = (getc(fp) >> 2);

} // конец цикла for

// если флаг enable_palette установлен, меняем палитру

// на загруженную из файла

if (enable_palette)

for (index=0; index<256; index++)

Set_Palette_Register(index,

(RGB_color_ptr)&image->palette);

} // конец цикла for

} // конец установки новой палитры

} // конец функции

Функция PCX_Load() - это сердце всей программы. Она загружает PCX-файл, декодирует его в буфере и загружает палитру. Каждый PCX-файл имеет свою собственную палитру в конце файла и я думаю, что вы сами можете добавить возможность загрузки повой палитры в таблицу соответствия цветов.

Функция выполняет именно те действия, которые мы с вами уже обсуждали и ничего больше:

    Открывает PCX-файл;

    Читает заголовок;

    Загружает PCX-файл и декомпрессирует все 64000 пикселей;

    Загружает цветовую палитру.

В общем, все это несложно. А вот что делать с картинками, которые больше, чем целый экран? Ответ прост: можно декодировать только маленький кусочек, скажем 24 на 24 пикселя.

Я создал для вас заготовку CHARPLATE.PCX, которую вы найдете на прилагаемом диске. Если вы посмотрите на него, то увидите множество маленьких белых квадратов. Вы можете использовать этот шаблон для рисования ваших игровых персонажей в этих квадратиках.

Кстати, впоследствии мы научимся извлекать битовые образы из больших PCX-файлов и использовать их в качестве персонажей игры.

Возникает вопрос: «Как редактировать PCX-файлы в режиме 320х200х 256?» Для этого можно воспользоваться такими условно-бесплатными программами как VGA-Paint или Pro-Paint. Тем не менее, я надеюсь, что самые расторопные читатели уже давно пользуются копией Electronic Art"s Deluxe Paint & Animation. Это одна из самых классных программ для рисования на ПК. Она корректно работает с режимом 320х200х256 и имеет множество полезных функций для преобразования и анимации изображения.

Побитовое копирование изображения (бит-блиттинг)

Термин бит-блиттинг (bit blitting) - означает процесс перемещения группы битов (образа) из одного места экрана в другое. В играх для ПК нас интересует перемещение образа из области хранения вне экрана в область видеобуфера. Давайте посмотрим на рисунок 5.9, чтобы уяснить сущность этой операции.

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

Чтобы понять суть перемещения, нам следовало бы написать несколько функций, которые бы брали битовую карту из PCX-файла и перемещали ее на экран. Но я хочу проявить некоторую «авторскую вольность» и поговорить о спрайтах и их анимации.

Спрайты

Вы можете спросить: «Что такое спрайт?». Знаете, есть такой газированный напиток... Снова шучу. На самом деле спрайты - это такие маленькие объектики, которые находятся на игровом поле и могут двигаться. Этот термин прижился с легкой руки программистов фирмы Atari и Apple в середине, 70-х годов. Теперь поговорим о спрайтах и их анимации. В будущем мы еще вернемся к этой теме в седьмой главе, «Продвинутая битовая графика и специальные эффекты. Именно с этой мыслью я создал несколько небольших спрайтов, которые мы будем использовать в дальнейшем.

Спрайты - это персонажи в играх для ПК, которые могут без труда перемещаться по экрану, изменять цвет и размер. Все это звучит как мечта программиста. Но надо помнить, что в IBM-совместимых компьютерах нет спрайтов! В нормальных компьютерах существует аппаратная поддержка спрайтов. Такие машины как Atari, Amiga, Commodore и последние модели Apple имеют эту возможность, а вот ПК - нет. Поэтому мы вынуждены делать это самостоятельно.

М-да. Нам будет чем заняться.

Конечно, мы не станем заниматься разработкой аппаратной поддержки спрайтов. Все, что нам нужно, это понять, каким образом помещать образ на экран, сохраняя при этом возможность его перемещений и видоизменений. Поскольку спрайт - это довольно сложный объект, то стоит подумать о том, как это реализовать на программном уровне. Мы вовремя об этом заговорили:. вспомните разработку игры «Астероиды».

Вот что нам надо:

    Мы должны уметь извлекать матрицу пикселей из загруженного РСХ-образа и сохранять ее в буфере, связанном со спрайтом;

    Более того, хотелось бы считывать сразу несколько образов из PCX-файла и загружать их в массив, связанный с одним спрайтом. Это позволит нам оптимизировать программу по скорости выполнения.

Рисунок 5.10 показывает последовательность кадров, которые приводят в движение ковбоя. Мы воспользуемся ею позже.

После того как мы загрузим данные из PCX-файла, нам необходимо иметь возможность показывать спрайт в любой позиции на экране. Делать это нужно осторожно, поскольку запись пикселей в видеобуфер разрушает то, что было на их месте. Поэтому, мы должны уметь сохранять ту часть изображения, которая окажется закрыта спрайтом, чтобы в дальнейшем иметь возможность восстано-вить первоначальный вид экрана.

Давайте на этом Месте остановимся и поговорим чуть-чуть об анимации. В играх для ПК применяется два способа обновления экрана:

    Мы можем перерисовывать весь экран целиком, как это сделано; в игре Wolfenstein 3D;

    Можно перерисовывать лишь участки экрана.

Какой из способов лучше выбрать, зависит от типа игры. Если мы перери-совываем весь экран, то это нужно делать по возможности быстро, поскольку 64000 пикселей - все же довольно много. Если мы перерисовываем только участки экрана, то желательно быть уверенным, что фон после прохождения спрайта не изменится. Поскольку все игры для ПК отличаются друг от друга, то для решения конкретных специфических задач всегда надо выбирать наиболее подходящую технику.

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

играл решающую роль в... креста" Андрэ Фурне, ... секрет - секрет программирование , а попросту... Сверхвозможности человека". ОГЛАВЛЕНИЕ ПРЕДИСЛОВИЕ В... Цель Лайя -Йоги...

  • Документ

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

  • " загадочные сверхвозможности человека" предисловие

    Документ

    Навязчивая мысль, мотив , образ (непроизвольная... словами ("ла" , "лау" , ... "игра" и в первую очередь - "игра ... Дочери креста" Андрэ Фурне, ... другой секрет - секрет бессмертия... женщине нейролингвистическое программирование , а попросту... судить по оглавлению , состоящему...

  • Виктор михайлович кандыба загадочные сверхвозможности человека аннотация загадочные сверхвозможности человека

    Документ

    Навязчивая мысль, мотив , образ (непроизвольная... словами ("ла" , "лау" , ... "игра" и в первую очередь – "игра ... Дочери креста" Андрэ Фурне, ... другой секрет секрет бессмертия... женщине нейролингвистическое программирование , а попросту... судить по оглавлению , состоящему...

  • На этой странице объясняется, как Вы можете с легкостью конвертировать a .pcx файл в PDF файл с помощью бесплатного и простого в использовании PDF24 Creator. Описанный способ конвертации является бесплатным и простым. PDF24 Creator устанавливает PDF принтер, и Вы можете распечатать Ваш.pcx файл на данном принтере, чтобы конвертировать файл в PDF.

    Что необходимо для конвертации PCX файла в PDF файл или как можно создать PDF версию Вашего PCX файла

    Файлы типа PCX или файлы с расширением.pcx можно легко конвертировать в PDF с помощью PDF принтера.

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

    Таким образом, Вы можете создать PDF версию любого файла, который можно распечатать. Просто откройте файл с помощью ридера, нажмите кнопку печати, выберите виртуальный PDF принтер и нажмите кнопку «Печать». Если у Вас есть устройство для чтения файла PCX и если ридер может распечатать файл, то Вы можете преобразовать файл в формат PDF.

    Бесплатный и простой в использовании PDF принтер от PDF24 можно загрузить с этой страницы. Просто нажмите на кнопку загрузки справа от этой статьи, чтобы загрузить PDF24 Creator. Установите это программное обеспечение. После установки Вы будете иметь новое печатающее устройство, зарегистрированное в Windows, которое можно использовать для создания PDF файлов из Вашего.pcx файла или конвертации любого другого файла с возможностью печати в формат PDF.

    Вот как это работает:

    1. Установите PDF24 Creator
    2. Откройте.pcx файл с помощью ридера, который может открыть файл.
    3. Распечатайте файл на виртуальном PDF24 PDF принтере.
    4. Помощник PDF24 открывает окно, в котором Вы можете сохранять новый файл как PDF, отправлять по его email, факсу или редактировать.

    Альтернативный способ того, как преобразовать PCX файл в PDF файл

    PDF24 предоставляет несколько онлайн инструментов, которые могут быть использованы для создания PDF файлов. Поддерживаемые типы файлов добавляются по мере поступления и, возможно, формат файла PCX также уже поддерживается. Служба конвертации имеет различные интерфейсы. Два из них являются следующими:

    Онлайн PDF Конвертер от PDF24 поддерживает множество файлов, которые могут быть преобразованы в PDF. Просто выберите файл PCX, из которого Вы хотели бы получить PDF версию, нажмите кнопку «конвертировать», и Вы получите PDF версию файла.

    Существует также E-Mail PDF Конвертер от PDF24, который также может быть использован для преобразования файлов в формат PDF. Просто отправьте по электронной почте сообщение в службу E-Mail PDF Конвертера, прикрепите PCX файл к этому письму, и через несколько секунд Вы получите PDF файл обратно.

    Настоящий формат хранения растровых изображений на РС был разработан фирмой Zsoft для программы PaintBrush.

    Файл программы РСХ состоит из заголовка. Все версии файлов РСХ имеют заголовок одинаковой структуры длиной 128 байт. Структура заголовка приведена в таблице 10.2.

    Таблица 10.2. Структура заголовка РСХ.

    Смещение Длина в байтах Примечание
    Байт идентификации: 0АН=файл РСХ
    Версия файла - 2,5 2 = версия 2,8 с описанием палитры 3 = версия 2,8 без описания палитры 5 = версия 3,0
    Ключ кодирования (уплотнения данных) 0 = без кодирования 1 = уплотнение RLE методом
    Количество битов на пиксель (количество битовых плоскостей)
    Координаты углов рисунка XMIN, YMIN, XMAX, YMAX (рис. 27)
    Разрешение по горизонтали dpi (dots per inch) - число точек на дюйм
    Разрешение по вертикали dpi (dots per inch) - число точек на дюйм
    Описание палитры в поле (16х3)м байтов
    Зарезервировано
    Число битовых плоскостей (не более 4)
    Число байтов на строку изображения (четное число)
    Параметры палитры 1 = ч/б 2 = уровни серого
    Пустые (для выравнивания заголовка до 128 байт)

    Следует отметить, что данные заголовка читаются справа налево. Вначале (слева) находятся низшие разряды числа, а справа - старшие. Например число FF31 записано так 31FF.

    Формат РСХ рассчитан для хранения прямоугольного участка изображения, состоящего из N строк по X пикселей в строке. Запоминание изображения осуществляется построчно, причем число битов (Х) четно и должно быть кратным 16-ти. Если оригинальный рисунок имеет другие размеры, то в конце строки добавляется несколько точек. Число строк в рисунке должно быть кратным 8-и. Для этого в нижней части рисунка (рис. 10.15) иногда вводятся дополнительные пустые строки.




    Следующие за заголовком графические данные располагаются в следующем порядке.

    Каждый рисунок считывается построчно и разделяется на битовые плоскости. (рис 10.16). Плоскость 0 - соответствует синему цвету, 1 - зеленому, 2 - красному, 3 - интенсивности.

    Вначале обрабатывается плоскость красного цвета. биты начальной строки объединяются в пары байтов. Незагруженные биты в последней паре байтов дополняются нулями.

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

    В файлах РСХ используется два метода укладки графических данных в файл: без уплотнения и с уплотнением. Если данные хранятся без уплотнения, то в байт со смещением 02 заголовка заносится число отличное от единицы, например 0.

    Уплотнение (кодировка) данных в файле РСХ осуществляется так.

    1. Если оба старших бита (6,7) байта заполнены 1, то последующая информация находится в уплотненной форме. В этом случае биты 0-5 указывают необходимое количество повторов цепочки битов, записанных в следующий байт.

    2. Если хотя бы в одном из старших битов (6,7) содержится нуль, то данный байт следует трактовать именно как байт данных. В этом случае все биты 0-7 обрабатываются непосредственно как данные изображения, т.е. при загрузке неуплотненных данных два старших бита представляют точки изображения.

    Например, пусть пара байтов соответствует коду С2FA, что в двоичном исчислении имеет вид: 1100001011111010.

    Поскольку в первом байте биты 6 и 7 единичные, а в битах 0-5 записано десятичное число 2, то цепочка битов второго байта повторится дважды: 1111101011111010.

    Если же, например, байт имеет вид 1А, что в битовом представлении соответствует 00011010, то эта цепочка битов является частью строки изображения.

    Для исключения неопределенности в случае, когда байт данных содержит единицы в 6 и 7 битах поступают так. Поскольку этот байт данных представляется лишь раз, то перед ним записывается байт-признак такого представления - С1. Пусть имеется байт данных С9. Здесь шестой,седьмой биты единичны. Тогда в РСХ-формате он представится так: С1С9.

    Дамп файла РСХ представлен на рисунке 10.17.

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

    Windows– формат (BMP).

    В программе Windows для хранения растровых графических изображений используется ВМР – формат. Его главным достоинством является независимость от устройств отображения.

    ВМР – файл состоит из нескольких блоков данных:

    BITMAP_FILE – заголовок

    (BITMAP_INFO – заголовок)

    BITMAP – данные рисунка

    Заголовок BITMAP­­­­­­­­_FILE имеет следующую структуру (таблица 10.4)

    Таблица 10.4. Структура заголовка ВМР – файла.

    Четырехбайтовое имя offs содержит смещение от начала файла

    до первого байта графических данных.

    BITMAP_FILE – заголовок описывает данные в целом.

    Детально параметры хранимого изображения описаны в BITMAP_INFO блоке, который следует непосредственно за заголовком файла. Этот блок состоит из BITMAP_INFO – заголовка, в котором хранятся общие сведения об изображении, и RGB_QUAD, в котором задается палитра цветов. Структура BITMAP_INFO заголовка представлена в таблице 10.5.


    Таблица 10.5.Структура BITMAP_INFO – блока

    Смещение Длина в байтах Имя Значение
    BITMAP_INFO – заголовок
    0ЕН biSize Длина – заголовка в байтах
    12Н biWidth Ширина битовой карты в пикселах
    16Н biHeight Высота битовой карты в пикселах
    1А Н biPlanes Цветовые плоскости (должно быть значение)
    1СН biBitlnt Количество битов на пиксел
    1ЕН biCompr Тип сжатия данных
    22Н biSizeIm Размер графического изображения в байтах
    26Н bixPels/m Разрешение по горизонтали
    2АН bixPels/m Разрешение по вертикали
    2ЕН biClrUsed Количество используемых цветов
    32Н biClImp Количество основных цветов
    RGB-QUAD
    36Н n*4 Определение для n цветов с раскладкой
    rgbBlue 1 байт – интенсивность голубого цвета
    rgbGreen 1 байт – интенсивность зеленого цвета
    rgbRed 1 байт – интенсивность красного цвета
    rgbres 1 байт – резервный

    Со смещением 1AH определяется количество основных плоскостей выводного устройства. Значение этого поля может быть равно 1 или 4 в зависимости от количества битовых плоскостей. В поле HbiBitCnt со смещением 1C записывается количество битов на один пиксел. 1 – определяет один бит на пиксел. В этом случае значение бита, равное 1 определяет один цвет пиксела, а 0 – второй цвет. Одному байту будет соответствовать восемь пикселов, 4 – определяет четыре бита на пиксел. В этом случае 1 байту соответствует 2 пиксела. Всего цветов – 16. 8 – определяет 1 байт на пиксел. Всего цветов 256. 24 – определяет 3 байта (24 бита) на пиксел. В 24 битах помещается число 2 24 (16 миллионов). Это может соответствовать такому же количеству цветов. Поскольку такая палитра была бы очень большой, практически оставляют 256 цветов от 0 до 255. При этом каждый цвет определяется тремя байтами, соответствующими соответственно красному, зеленому и синему цветам. В каждом байте определяется доля соответствующего цвета. При 24-битовом представлении данных графического изображения палитра в BITMAP_INFO – блоке отсутствует.

    Существуют следующие способы сжатия (упаковки) данных в файлах ВМР:

    BI_RGB – данные не упакованы

    BI_RLE8 – используется способ Run_Length – Encoding (RLE) (для битовой карты с 8 битами на пиксел)

    BI_RLE4 – используется способ Run_Length – Encoding (RLE) (для битовых карт с 4 битами на пиксел).

    Этим типам сжатия соответствуют следующие константы

    BI_RGB=0; BI_RLE8=1; BI_RLE4=2

    Эти константы записаны в поле «Тип сжатия данных» со смещением 1EН. Поле «bisizeImage» (смещение 22) задает длину области данных упакованных битовой карты в байтах. Поля «bixPels на метр» и «biyPels на метр» определяют число Pels (picture elements на метр).

    Поле «biClrUser» (смещение 2ЕН) определяет количество цветов палитры. При значении 0 используется вся палитра.

    Со смещением 36Н начинается таблица с определением цветов. Каждый цвет задается указанием доли синего, зеленого и красного цвета. При этом на каждый шаг в палитре отводится по 4 байта, последний из которых остается не заполненным. Длина таблицы определяется количеством цветов.

    Область данных

    Графическое изображение отображается в области данных построчно. Между строками не должно быть разрывов. При необходимости доска дополняется нулевыми значениями справа до длины, кратной 32 битам. Кодировка изображения начинается с левого нижнего угла.

    При необходимости данные могут хранится в сжатом виде.

    Битовое RLE сжатие

    1 способ. Длинные последовательности одинаковых битов представляются в виде записей каждая длиной 2 байта (рис. 10.18).

    Рис. 10.18.

    В счетчике (первый байт) указывается число повторений цвета, код которого записан во второй байт. Например, запись 03 08 означает трехкратное повторение цвета 08:080808. Счетчик может принимать значения от 0 до 255.

    2 способ. Этот способ указывается нулевыми значениями первого байта. Во втором байте записано число в интервале , указывающей число байтов данных. Каждый такой байт содержит номер цвета, использованного для изображения определенной точки. Например 00 030F12E3 означает, что изображение состоит из трех подряд расположенных точек, цвета которых равны соответственно: OF12E3.

    В том случае если во втором способе второй байт равен целой величине с интервала , то запись интерпретируется как ESCAPE – запись, с помощью которой отмечается конец строки или битовой карты, а также сдвиг последующей точки изображения относительно текущей (табл.10.6).

    Таблица 10.6.Кодирование ESCAPE – записи

    Поле DeltaRecord состоит из 4 байтов следующей структуры 00 02.XX YY

    XX означает смещение в пикселах по горизонтали, а YY смещение по вертикали. Например, запись 02 55 0611 0003 01 05А7 0002 06 08 интерпретируется так

    11 11 11 11 11 11

    Сдвиг на 6 пикселов по оси X и на 8 пикселов вдоль оси Y.

    Битовое RLE – сжатие

    Настоящее кодирование абсолютно такое же, что и 8-битовое RLE – кодирование. Если значение первого байта лежит в интервале , то первый байт содержит число повторений информации, содержащейся во втором байте. При этом вначале считываются те же старшие четыре бита и т.д., до достижения числа точек, указанного в счетчике повторений. Например, запись 04 8F будет интерпретироована так: 8F 8F, а запись 03FF так: FFF.

    Если первый байт равен 00, то при значении второго байта от 0 до 0FFH он интепретируется как счетчик. В n последующих байтах будет храниться информация о 2n точках графического изображения. Последовательность байтов должна заканчиваться на границе слова. Если второй байт равен 0, 1, 2, то как и в случае 8-битового RLE – кодирование он определяет ESCAPE – последовательность.

    На рис. 10.19 представлен фрагмент дампа ВМР – файла.

    Здесь, согласно кодовой таблице 6.8, коды 42 и 4D – метка файла BM, число 22С37D00 -длина файла в байтах и т.д. в соответствии с описанием.

    Контрольные вопросы

    1.Как описываются пространственные объекты в ГИС и ЗИС?

    2.Какие бывают типы данных и их источники в ГИС и ЗИС?

    3. Дайте определение слоя информации.

    4.Назовите способы векторного представления данных.

    5.Дайте определение растровой модели данных.

    6.Какие бывают способы сжатия растровых данных?

    7.Приведите краткую характеристику регулярных и нерегулярных моделей данных.

    8.Дайте краткую характеристику растровых форматов данных РСХ, ВМР.

    Картографическая основа ГИС

    Мы надеемся, что помогли Вам решить проблему с файлом PCX. Если Вы не знаете, где можно скачать приложение из нашего списка, нажмите на ссылку (это название программы) - Вы найдете более подробную информацию относительно места, откуда загрузить безопасную установочную версию необходимого приложения.

    Что еще может вызвать проблемы?

    Поводов того, что Вы не можете открыть файл PCX может быть больше (не только отсутствие соответствующего приложения).
    Во-первых - файл PCX может быть неправильно связан (несовместим) с установленным приложением для его обслуживания. В таком случае Вам необходимо самостоятельно изменить эту связь. С этой целью нажмите правую кнопку мышки на файле PCX, который Вы хотите редактировать, нажмите опцию "Открыть с помощью" а затем выберите из списка программу, которую Вы установили. После такого действия, проблемы с открытием файла PCX должны полностью исчезнуть.
    Во вторых - файл, который Вы хотите открыть может быть просто поврежден. В таком случае лучше всего будет найти новую его версию, или скачать его повторно с того же источника (возможно по какому-то поводу в предыдущей сессии скачивание файла PCX не закончилось и он не может быть правильно открыт).

    Вы хотите помочь?

    Если у Вас есть дополнительная информация о расширение файла PCX мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся и отправьте нам свою информацию о файле PCX.

    У вас есть проблема с открытием.PCX-файлов? Мы собираем информацию о файловых форматах и можем рассказать для чего нужны файлы PCX. Дополнительно мы рекомендуем программы, которые больше всего подходят для открытия или конвертирования таких файлов.

    Для чего нужен файловый формат.PCX?

    Как сокращение от "PC Exchange" расширение .pcx относится к типу файлов "Изображение ZSoft" (.pcx ). ZSoft — компания-разработчик графического формата PC Exchange (PCX), впервые использовавшая его в своем графическом редакторе PC Paintbrush (MS-DOS). Оставшись в наследство от эпохи MS-DOS, формат PCX пригоден для индексированных (4/8 бит) и полноцветных (24 бит) растровых RGB-изображений с применением быстрого, но не слишком эффективного метода сжатия без потерь. PCX чем-то похож на BMP, хоть и гораздо менее распространен.

    Файл .pcx представляет собой графическое изображение в формате PCX. В Майкрософт Windows "родная" поддержка PCX отсутствует еще с Windows 98, но изображения .pcx можно было использовать в Майкрософт Office путем импорта через соответствующий фильтр формата (с 2003 не поддерживается). Во всех последующих выпусках Майкрософт Windows и Office для работы с изображениями .pcx требуется стороннее ПО.

    

    Изображения PCX по-прежнему открываются рядом универсальных просмотрщиков (некоторые даже обеспечивают создание миниатюр предпросмотра), а также импортируются мощными графическими редакторами вроде Adobe Photoshop или GIMP. Кроме того, существуют конвертеры для различных платформ, способные преобразовывать изображения .pcx в стандартные форматы PNG, JPEG или TIFF.

    Программы для открытия или конвертации PCX файлов

    Вы можете открыть файлы PCX с помощью следующих программ: