Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Форматы изображений PCX [ править ]

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

PCX поддерживается обычным программным обеспечением для обработки изображений, включая ACDSee , 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-совместимых ПК и всегда используют порядок байтов с прямым порядком байтов. Файл PCX состоит из трех основных разделов в следующем порядке.

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

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

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

Схема данных изображения [ править ]

Данные изображения 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 бит, независимо от глубины цвета изображения.

Ссылки [ править ]

  1. ^ .pcxТип MIME не зарегистрирован в IANA
  2. ^ a b Джеймс Д. Мюррей, Уильям ванРайпер (апрель 1996 г.). «Энциклопедия форматов графических файлов, второе издание» . О'Рейли . ISBN 1-56592-161-5. Проверено 7 марта 2014 .CS1 maint: использует параметр авторов ( ссылка )
  3. Нир Софер. «Расширение .pcx» . Проверено 12 января 2014 .
  4. ^ «Тип файла: Microsoft PaintBrush Bitmap Graphic» . Ассоциация файлов Windows . Microsoft . 2013 . Проверено 12 января 2014 .
  5. ^ «Форматы изображений» . Общая документация FFmpeg . 2014 . Проверено 23 февраля 2014 .
  6. ^ «Расширение файла .DCX» . fileinfo.com. 2010-02-19 . Проверено 14 марта 2014 .
  7. Дин Энсли (1991). «Техническое справочное руководство по формату файлов ZSoft PCX» . ZSoft Corporation . Проверено 14 марта 2014 .
  8. ^ «Формат PCX» . ModdingWiki. 2012-06-23 . Проверено 14 марта 2014 .