Формат PCX¶
PCX — это растровый графический формат файлов, разработанный компанией ZSoft Corporation для хранения цифровых изображений. Формат использует сжатие без потерь на основе алгоритма кодирования длин серий (RLE) и поддерживает различные цветовые режимы, включая монохромный, индексированные палитры и полноцветные изображения. PCX был одним из первых стандартных форматов для графических редакторов, работающих в операционной системе MS-DOS, и получил широкое распространение в 1980-х — начале 1990-х годов, особенно в среде IBM PC-совместимых компьютеров.
¶История
Формат PCX был создан в 1982 году компанией ZSoft Corporation для своего графического редактора PC Paintbrush. Изначально он предназначался для работы с монохромными изображениями и поддерживал только чёрно-белую палитру. С развитием аппаратного обеспечения и появлением цветных дисплеев (CGA, EGA, VGA) формат был расширен: в версии 2.0 (1984) добавлена поддержка 16-цветных изображений, в версии 3.0 (1985) — 256-цветных, а в версии 5.0 (1991) — полноцветных (24-битных) изображений.
PCX стал стандартом де-факто для обмена графикой в среде MS-DOS, поскольку PC Paintbrush был предустановлен на многих IBM PC-совместимых компьютерах. Формат активно использовался в программах для рисования, сканирования изображений и в играх того времени. Однако с распространением более эффективных форматов, таких как GIF, JPEG и PNG, популярность PCX пошла на спад. К середине 1990-х годов он был вытеснен из массового использования, хотя некоторые старые приложения и сканеры продолжали его поддерживать.
¶Структура файла
Файл PCX состоит из трёх основных частей: заголовка, данных растрового изображения и необязательной палитры. Структура строго фиксирована и не допускает вариаций для разных версий.
¶Заголовок
Заголовок PCX имеет длину 128 байт и содержит метаданные об изображении. Основные поля включают:
- Идентификатор (1 байт) — всегда равен
0x0A(число 10), что служит маркером формата. - Версия (1 байт) — указывает версию формата: 0 — версия 2.5, 2 — версия 2.8 с палитрой, 3 — версия 2.8 без палитры (стандартная), 5 — версия 3.0 и выше (с 24-битной поддержкой).
- Метод кодирования (1 байт) — всегда равен 1 (RLE-сжатие).
- Бит на пиксель (1 байт) — глубина цвета: 1 для монохромных, 4 для 16-цветных, 8 для 256-цветных, 24 для полноцветных изображений.
- Размеры изображения (8 байт) — координаты левого верхнего (Xmin, Ymin) и правого нижнего (Xmax, Ymax) углов в пикселях. Ширина вычисляется как
Xmax - Xmin + 1, высота — какYmax - Ymin + 1. - Разрешение (4 байта) — горизонтальное и вертикальное разрешение в точках на дюйм (DPI), обычно 72 или 96.
- Палитра (48 байт) — 16 записей по 3 байта (RGB) для 16-цветных изображений. Для 256-цветных изображений палитра хранится в конце файла.
- Зарезервированные поля — заполняются нулями.
¶Данные изображения
После заголовка следуют строки растровых данных, сжатые с помощью алгоритма RLE. Каждая строка изображения кодируется отдельно. Принцип сжатия:
- Если два старших бита байта равны
11(значение байта >= 192), то этот байт является счётчиком повторов. Младшие 6 бит указывают количество повторений следующего байта (от 1 до 63). - Если два старших бита не равны
11, байт интерпретируется как пиксельное значение без сжатия.
Для монохромных и 16-цветных изображений данные упаковываются в плоскости (planes). Количество плоскостей указывается в заголовке: 1 для монохромных, 4 для 16-цветных (по одной на каждый бит цвета), 3 для 24-битных (RGB). Для 256-цветных изображений используется одна плоскость.
¶Палитра
Для 256-цветных изображений (версия 5.0) палитра хранится в конце файла, после всех строк данных. Она начинается с байта-маркера 0x0C (число 12), за которым следуют 768 байт (256 записей по 3 байта RGB). Для 16-цветных изображений палитра встроена в заголовок. 24-битные изображения не используют палитру — цвета задаются непосредственно в данных.
¶Характеристики
¶Цветовые режимы
PCX поддерживает следующие цветовые режимы:
- Монохромный (1 бит на пиксель) — чёрно-белые изображения без оттенков серого.
- 16 цветов (4 бита на пиксель) — индексированная палитра, где каждый пиксель ссылается на один из 16 цветов, определённых в заголовке.
- 256 цветов (8 бит на пиксель) — индексированная палитра, хранящаяся в конце файла.
- 24-битный полноцветный (24 бита на пиксель) — три плоскости (R, G, B) по 8 бит каждая, без палитры.
¶Сжатие
Сжатие RLE в PCX является простым и эффективным для изображений с большими однородными областями (например, текст, диаграммы). Однако для фотографических изображений с множеством мелких деталей коэффициент сжатия низкий, а иногда файл может быть даже больше несжатого. В отличие от форматов PNG или JPEG, PCX не использует статистические методы (например, LZW или Хаффмана), поэтому его степень сжатия ограничена.
¶Ограничения
- Максимальный размер изображения — 65535 x 65535 пикселей (из-за 16-битных координат в заголовке).
- Отсутствие поддержки прозрачности (альфа-канала).
- Отсутствие поддержки цветовых профилей (ICC).
- Невозможность хранения нескольких страниц или анимации.
- Неэффективное сжатие для сложных изображений.
¶Применение
В 1980-х — начале 1990-х годов PCX был одним из основных форматов для хранения и обмена растровой графикой в среде MS-DOS. Он использовался в следующих областях:
- Графические редакторы — PC Paintbrush, Microsoft Paint (ранние версии), CorelDRAW (импорт/экспорт).
- Сканирование изображений — многие сканеры того времени по умолчанию сохраняли результаты в формате PCX.
- Компьютерные игры — для хранения спрайтов, текстур и фонов, особенно в играх для EGA и VGA.
- Настольные издательские системы — для вставки иллюстраций в документы.
С развитием более совершенных форматов (GIF, PNG, JPEG) PCX вышел из активного употребления. В настоящее время он поддерживается большинством современных графических редакторов (Adobe Photoshop, GIMP, IrfanView) в режиме импорта/экспорта, но используется редко, в основном для работы со старыми архивами или в специализированных приложениях.
¶Сравнение с другими форматами
| Характеристика | PCX | BMP | GIF | PNG |
|---|---|---|---|---|
| Сжатие | RLE (без потерь) | RLE (опционально) | LZW (без потерь) | Deflate (без потерь) |
| Глубина цвета | 1, 4, 8, 24 бита | 1–32 бита | 1–8 бит | 1–48 бит |
| Прозрачность | Нет | Нет | Да (1 бит) | Да (альфа-канал) |
| Анимация | Нет | Нет | Да | Нет (APNG — редко) |
| Макс. размер | 65535×65535 | Зависит от версии | 65535×65535 | 2^31×2^31 |
| Популярность | Историческая | Высокая (Windows) | Средняя | Высокая |
PCX уступает современным форматам по эффективности сжатия и функциональности, но остаётся значимым с исторической точки зрения.
¶Совместимость
Файлы PCX могут быть открыты в большинстве современных операционных систем с помощью стандартных программ просмотра изображений или графических редакторов. В Windows 10 и 11 встроенное приложение «Фотографии» не поддерживает PCX, но файлы можно открыть в IrfanView, XnView, GIMP или Adobe Photoshop. В Linux формат поддерживается библиотекой ImageMagick и большинством программ на основе GTK.
¶Интересные факты
- Формат PCX был одним из первых, который использовал сжатие RLE для растровых изображений на персональных компьютерах.
- Изначально PCX не поддерживал 256-цветные изображения — эта возможность была добавлена только в версии 3.0, когда видеокарты VGA стали массовыми.
- В файлах PCX версии 2.8 палитра для 16-цветных изображений могла отсутствовать, и цвета задавались по умолчанию (EGA-палитра).
- Несмотря на устаревание, PCX до сих пор используется в некоторых промышленных системах и старых медицинских устройствах для хранения снимков.
¶Источники
- Murray J. D., van Ryper W. Encyclopedia of Graphics File Formats. — 2nd ed. — O'Reilly Media, 1996. — ISBN 1-56592-161-5.
- ZSoft Corporation. PC Paintbrush Technical Reference Manual. — 1991.
- W3C. Portable Network Graphics (PNG) Specification. — 2003.
- Статья «PCX» в англоязычной Википедии (версия от 10 января 2024 года).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


