ПКХ

Формат файла изображения
ПКХ
Расширение имени файла
.pcx
Тип интернет-СМИimage/vnd.zbrush.pcx, image/x-pcx(устарело) [1]
РазработаноКорпорация ZSoft
Первоначальный выпуск1985 ; 39 лет назад ( 1985 )
Последний релиз
5
1991 ; 33 года назад ( 1991 )
Тип формата Формат растрового изображения без потерь

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

Форматы изображений PCX

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

Распространенные форматы изображений PCX [ требуется ссылка ]
Глубина цветаСамолетыКоличество цветов
4116 цветов из палитры
81256 цветов из палитры
81256 оттенков серого
444096 цветов с 16 уровнями прозрачности
8316,7 миллионов, 24-битный «истинный цвет»
8416,7 млн ​​с 256 уровнями прозрачности
112 цвета, монохромный (1-бит) (Win 3.1 Paintbrush)
1416 цветов RGBi (4-бит) в 4 плоскостях (Win 3.1 Paintbrush)

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

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

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

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

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

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

Смещенный шестигранникСмещение дек.РазмерЦель
0001 байтПоле фиксированного заголовка, имеющее шестнадцатеричное 0x0A значение (= 10 в десятичном формате).
0111 байтНомер версии, относящийся к выпуску программного обеспечения Paintbrush, который может быть:
0
PC Paintbrush версии 2.5 с фиксированной палитрой EGA
2
PC Paintbrush версии 2.8 с использованием изменяемой палитры EGA
3
PC Paintbrush версии 2.8 без палитры
4
ПК-кисть для Windows
5
PC Paintbrush версии 3.0, включая 24-битные изображения
0221 байтМетод, используемый для кодирования данных изображения. Может быть:
0
Без кодировки (используется редко)
1
Кодирование длин серий (RLE)
0331 байтКоличество бит, составляющих одну плоскость. Чаще всего 1, 2, 4 или 8.
0442 байтаМинимальная координата x положения изображения.
0662 байтаМинимальная координата Y положения изображения.
0882 байтаМаксимальная координата x положения изображения.
102 байтаМаксимальная координата Y положения изображения.
122 байтаГоризонтальное разрешение изображения в DPI.
142 байтаВертикальное разрешение изображения в DPI.
101648 байтПалитра EGA для 16-цветных изображений.
40641 байтПервое зарезервированное поле, обычно равное нулю.
41651 байтКоличество цветовых плоскостей, составляющих данные пикселей. Чаще всего выбирается 1, 3 или 4.
42662 байтаКоличество байтов одной цветовой плоскости, представляющих одну строку развертки.
44682 байтаРежим, в котором следует трактовать палитру:
1
Палитра содержит монохромную или цветную информацию.
2
Палитра содержит информацию в оттенках серого
46702 байтаГоризонтальное разрешение экрана исходной системы.
48722 байтаВертикальное разрешение экрана исходной системы.
7454 байтаВторое зарезервированное поле, предназначенное для будущих расширений и обычно имеющее значение ноль байтов.

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

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

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

Данные изображения PCX, организованные в цветовые плоскости
Ряд 0РРРРРРР
ГГГГГГГГ
ББББББББ
ААААААААА
Ряд 1РРРРРРР
ГГГГГГГГ
ББББББББ
ААААААААА
Ряд 2 и т.д.....

Если изображение содержит менее 8 бит на пиксель, каждая строка дополняется до следующей четной границы байта. [7] Например, если изображение имеет 1 плоскость 1-битных данных (монохромных) шириной 22 пикселя, каждая строка будет иметь длину 4 байта, имея 32 бита на строку с 10 неиспользуемыми битами.

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

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

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

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

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

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

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

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

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

Ссылки

  1. ^ Тип MIME .pcx не зарегистрирован в IANA
  2. ^ ab Джеймс Д. Мюррей; Уильям ван Райпер (апрель 1996 г.). Энциклопедия форматов графических файлов, второе издание . O'Reilly . ISBN 1-56592-161-5. Получено 2014-03-07 .
  3. ^ Нир Софер. "Расширение .pcx" . Получено 2014-01-12 .
  4. ^ "Тип файла: Microsoft PaintBrush Bitmap Graphic". Ассоциация файлов Windows . Microsoft . 2013. Архивировано из оригинала 2014-03-14 . Получено 2014-03-14 .
  5. ^ "Форматы изображений". Общая документация FFmpeg . 2014. Получено 23.02.2014 .
  6. ^ "Расширение файла .DCX". fileinfo.com. 2010-02-19 . Получено 2014-03-14 .
  7. ^ ab Dean Ansley (1991). "Техническое справочное руководство по формату файлов ZSoft PCX". ZSoft Corporation. Архивировано из оригинала 2014-03-14 . Получено 2014-03-14 .
  8. ^ "Формат PCX". ModdingWiki. 2012-06-23 . Получено 2014-03-14 .
Retrieved from "https://en.wikipedia.org/w/index.php?title=PCX&oldid=1246402189"