Расширение имени файла | .pcx |
---|---|
Тип интернет-СМИ | image/vnd.zbrush.pcx , image/x-pcx (устарело) [1] |
Разработано | ZSoft Corporation |
Первый выпуск | 1985 |
Последний релиз | 5 (1991 ) |
Тип формата | Формат растрового изображения без потерь |
PCX , сокращение от PiCture eXchange , представляет собой формат файлов изображений, разработанный ныне несуществующей корпорацией ZSoft в Мариетте, штат Джорджия , США . Это был собственный формат файлов для PC Paintbrush и стал одним из первых широко принятых стандартов обработки изображений DOS , хотя с тех пор на смену ему пришли более сложные форматы изображений, такие как BMP , JPEG и PNG . Файлы PCX обычно хранят изображения с индексированной палитрой в диапазоне от 2 или 4 до 16 и 256 цветов, хотя формат был расширен для записи изображений с истинным цветом (24 бита). [2]
Форматы изображений 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 . [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 состоит из трех основных разделов в следующем порядке.
- 128-байтовый заголовок
- данные изображения
- (опционально) 256-цветная палитра
Заголовок файла PCX содержит байт идентификатора (значение 10), номер версии, размеры изображения, 16 цветов палитры, числовые цветовые плоскости, битовую глубину каждой плоскости и значение для метода сжатия. Номера версий PCX варьируются от 0 до 5, это первоначально обозначало версию программы PCX Paintbrush, которая использовалась для создания файла PCX. В заголовке всегда есть место для 16 цветов, хотя количество используемых цветов зависит от битовой глубины изображения. [ требуется пояснение ] Длина заголовка составляет 74 байта, и данные изображения начинаются через 128 байтов после начала файла, 54 байта между ними не используются. [7] Заголовок состоит из 18 полей: [2]
Смещение шестигранника | Offset dec | Размер | Цель |
---|---|---|---|
00 | 0 | 1 байт | Фиксированное поле заголовка оценивается в шестнадцатеричном формате 0x0A (= 10 в десятичном). |
01 | 1 | 1 байт | Номер версии, относящийся к выпуску программного обеспечения Paintbrush, который может быть:
|
02 | 2 | 1 байт | Метод, используемый для кодирования данных изображения. Может быть:
|
03 | 3 | 1 байт | Количество битов, составляющих один пиксель в плоскости. Возможные значения:
|
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 байта | Режим построения палитры:
|
46 | 70 | 2 байта | Горизонтальное разрешение экрана исходной системы. |
48 | 72 | 2 байта | Вертикальное разрешение экрана исходной системы. |
4А | 74 | 54 байта | Второе зарезервированное поле предназначено для будущих расширений и обычно имеет нулевое значение. |
Все файлы PCX используют одну и ту же схему сжатия, а значение сжатия всегда равно 1. Никаких других значений не было определено, и нет несжатых файлов PCX. Один источник утверждает, что 0 (без сжатия) разрешен, но не многие программы поддерживают его . [8]
Схема данных изображения [ править ]
Строка 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, байт интерпретируется как длина серии. Это оставляет 6 битов для фактического значения длины серии, т. Е. Диапазон значений 0-63.
- в любом другом случае байт интерпретируется как значение одного пикселя. Это оставляет все значения, для которых бит №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 бит, независимо от глубины цвета изображения.
Ссылки [ править ]
- ^ .pcxТип MIME не зарегистрирован в IANA
- ^ a b Джеймс Д. Мюррей, Уильям ванРайпер (апрель 1996 г.). «Энциклопедия форматов графических файлов, второе издание» . О'Рейли . ISBN 1-56592-161-5. Проверено 7 марта 2014 .CS1 maint: использует параметр авторов ( ссылка )
- ↑ Нир Софер. «Расширение .pcx» . Проверено 12 января 2014 .
- ^ «Тип файла: Microsoft PaintBrush Bitmap Graphic» . Ассоциация файлов Windows . Microsoft . 2013 . Проверено 12 января 2014 .
- ^ «Форматы изображений» . Общая документация FFmpeg . 2014 . Проверено 23 февраля 2014 .
- ^ «Расширение файла .DCX» . fileinfo.com. 2010-02-19 . Проверено 14 марта 2014 .
- ↑ Дин Энсли (1991). «Техническое справочное руководство по формату файлов ZSoft PCX» . ZSoft Corporation . Проверено 14 марта 2014 .
- ^ «Формат PCX» . ModdingWiki. 2012-06-23 . Проверено 14 марта 2014 .