PCX

редактировать
Эта статья о формате файла изображения. Для фондовой биржи см. Тихоокеанская биржа. Для мотоцикла см. Honda PCX.
PCX
Расширение имени файла . pcx
Тип интернет-СМИ image/vnd.zbrush.pcx, image/x-pcx (устарело)
Разработан ZSoft Corporation
изначальный выпуск 1985 ; 36 лет назад  ( 1985 )
Последний релиз 5 (1991 ; 30 лет назад )  ( 1991 )
Тип формата Формат растрового изображения без потерь

PCX, сокращение от PiCture eXchange, представляет собой формат файлов изображений, разработанный ныне несуществующей корпорацией ZSoft в Мариетте, штат Джорджия, США. Это был собственный формат файлов для PC Paintbrush и стал одним из первых широко принятых стандартов обработки изображений DOS, хотя с тех пор на смену ему пришли более сложные форматы изображений, такие как BMP, JPEG и PNG. Файлы PCX обычно хранят изображения с индексированной палитрой в диапазоне от 2 или 4 до 16 и 256 цветов, хотя формат был расширен для записи изображений с истинным цветом (24 бита).

СОДЕРЖАНИЕ
  • 1 форматы изображений PCX
  • 2 формат файла PCX
    • 2.1 Схема данных изображения
    • 2.2 Сжатие данных изображения
    • 2.3 Цветовая палитра
  • 3 ссылки
Форматы изображений PCX
Таблица A. Общие форматы изображений PCX
Битовая глубина Самолеты Количество цветов
4 1 16 цветов из палитры
8 1 256 цветов из палитры
8 1 256 оттенков серого
4 4 4096 цветов с 16 уровнями прозрачности
8 3 16,7 миллионов, 24-битный "истинный цвет"
8 4 16,7 миллиона с 256 уровнями прозрачности
1 1 2 цвета монохромный (1 бит) (Win 3.1 Paintbrush)
1 4 16 цветов RGBi (4-бит) в 4 плоскостях (Win 3.1 Paintbrush)

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

PCX поддерживается обычным программным обеспечением для обработки изображений, включая ACDSee, GIMP, ImageMagick, IrfanView, LView, Netpbm, PaintShop Pro, Photoshop, Visio, PMview, XnView и GraphicConverter. В версии 2.1.4 FFmpeg мог кодировать и декодировать пиксельные форматы PCX rgb24, rgb8, bgr8, rgb4_byte, bgr4_byte, gray, pal8 и monob.

Существует многостраничная версия PCX, используемая некоторыми компьютерными программами для работы с факсами и документами, с расширением файла .dcx. Файл DCX состоит из заголовка, представляющего набор следующих файлов PCX.

Формат файла PCX

Файлы PCX были разработаны для использования на IBM-совместимых ПК и всегда используют порядок байтов с прямым порядком байтов. Файл PCX состоит из трех основных разделов в следующем порядке.

  1. 128-байтовый заголовок
  2. данные изображения
  3. (опционально) 256-цветная палитра

Заголовок файла PCX содержит байт идентификатора (значение 10), номер версии, размеры изображения, 16 цветов палитры, числовые цветовые плоскости, битовую глубину каждой плоскости и значение для метода сжатия. Номера версий PCX варьируются от 0 до 5, это первоначально обозначало версию программы PCX Paintbrush, которая использовалась для создания файла PCX. В заголовке всегда есть место для 16 цветов, хотя количество используемых цветов зависит от битовой глубины изображения. Заголовок имеет длину 74 байта, а данные изображения начинаются через 128 байтов после начала файла, 54 байта между ними не используются. Заголовок состоит из 18 полей:

Смещение шестигранника Offset dec Размер Цель
00 0 1 байт Фиксированное поле заголовка оценивается в шестнадцатеричном формате 0x0A (= 10 в десятичном).
01 1 1 байт Номер версии, относящийся к выпуску программного обеспечения Paintbrush, который может быть:
0
PC Paintbrush версии 2.5 с фиксированной палитрой EGA
2
PC Paintbrush версии 2.8 с изменяемой палитрой EGA
3
PC Paintbrush версии 2.8 без палитры
4
PC Paintbrush для Windows
5
PC Paintbrush версии 3.0, включая 24-битные изображения
02 2 1 байт Метод, используемый для кодирования данных изображения. Возможно:
0
Без кодировки (используется редко)
1
Кодирование длин серий (RLE)
03 3 1 байт Количество битов, составляющих один пиксель в плоскости. Возможные значения:
1
Изображение двухцветное (монохромное)
2
Изображение имеет четыре цвета
4
Изображение имеет 16 цветов
8
Изображение имеет 256 цветов
04 4 2 байта Минимальная координата x положения изображения.
06 6 2 байта Минимальная координата Y положения изображения.
08 8 2 байта Максимальная координата x положения изображения.
0A 10 2 байта Максимальная координата Y положения изображения.
0C 12 2 байта Разрешение изображения по горизонтали в DPI.
0E 14 2 байта Разрешение изображения по вертикали в DPI.
10 16 48 байт Палитра EGA для 16-цветных изображений.
40 64 1 байт Первое зарезервированное поле, обычно равное нулю.
41 год 65 1 байт Количество цветовых плоскостей, составляющих данные пикселей. В основном выбирается 1, 3 или 4.
42 66 2 байта Количество байтов одной цветовой плоскости, представляющей одну строку развертки.
44 год 68 2 байта Режим построения палитры:
1
Палитра содержит монохромную или цветовую информацию.
2
Палитра содержит информацию о градациях серого
46 70 2 байта Горизонтальное разрешение экрана исходной системы.
48 72 2 байта Вертикальное разрешение экрана исходной системы.
74 54 байта Второе зарезервированное поле предназначено для будущих расширений и обычно имеет нулевое значение.

Все файлы PCX используют одну и ту же схему сжатия, а значение сжатия всегда равно 1. Никаких других значений не было определено, и нет несжатых файлов PCX. Один источник утверждает, что 0 (без сжатия) разрешен, но не многие программы поддерживают его.

Схема данных изображения

Таблица B. Данные изображения PCX, организованные в цветовые плоскости
Строка 0 RRRRRRRRR
GGGGGGGG
BBBBBBBBB
AAAAAAAAA
Ряд 1 RRRRRRRRR
GGGGGGGG
BBBBBBBBB
AAAAAAAAA
Ряд 2 и т. Д. ....

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

Когда изображение меньше 8 бит на пиксель, каждая строка дополняется до границы следующего байта. Например, если изображение имеет 1 плоскость 1-битных данных (монохромный) с шириной 22 пикселя, каждая строка будет иметь длину 3 байта, имея 24 бита в строке с 2 неиспользованными битами.

Сжатие данных изображения

Данные изображения PCX сжимаются с использованием кодирования длин серий (RLE), простого алгоритма сжатия без потерь, который сворачивает серию из трех или более последовательных байтов с одинаковыми значениями в двухбайтовую пару. Два старших бита байта используются для определения того, представляют ли данные данные один пиксель данного индекса палитры или значения цвета или пару RLE, представляющую серию из нескольких пикселей одного значения:

  1. если оба бита равны 1, байт интерпретируется как длина серии. Это оставляет 6 битов для фактического значения длины серии, т. Е. Диапазон значений 0-63.
  2. в любом другом случае байт интерпретируется как значение одного пикселя. Это оставляет все значения, для которых бит №7 и бит №8 не равны 1 одновременно. Это требование не выполняется для всех значений 192 (двоичное 11000000) и выше.

По сравнению с максимальной длиной прогона 128, возможной при сжатии TGA RLE, кодирование длин серий PCX предлагает больший диапазон значений одного пикселя, в то время как максимальная длина прогона ограничена 63.

Из-за использования двух старших битов в качестве флагов, значения пикселей от 192 до 255 (с уже установленным их старший значащий бит) должны храниться в паре байтов RLE, даже если они встречаются только один или два пикселя подряд., тогда как цветовые индексы от 0 до 191 могут храниться напрямую или в парах байтов RLE (в зависимости от того, что более эффективно по пространству); поэтому фактическая степень сжатия может быть оптимизирована с помощью надлежащей сортировки записей палитры, хотя это невозможно, если файл должен использовать свою цветовую палитру с другими изображениями. Например, палитра может быть оптимизирована с использованием наиболее часто используемых цветов, находящихся в позициях палитры от 0 до 191, и наименее распространенных цветов, отнесенных к оставшейся четверти палитры.

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

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

Цветовая палитра

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

Если файл PCX имеет 256-цветовую палитру, он находится через 768 байт от конца файла. В этом случае значение в байте, предшествующем палитре, должно быть 12 (0x0C). Палитра хранится как последовательность троек RGB; его полезная длина определяется количеством цветов в изображении. Значения цветов в палитре PCX всегда используют 8 бит, независимо от глубины цвета изображения.

Рекомендации
Последняя правка сделана 2023-03-19 09:22:05
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте