Что такое формат файла XPM?
Файл .xpm хранит растровое изображение в формате X PixMap - текстовом формате с индексированными цветами, родном для X Window System. В отличие от большинства графических форматов, файл XPM также является валидным исходным кодом на языке C: он объявляет статический массив строк, который программы на C и C++ могут подключать через #include напрямую, без отдельного этапа загрузки изображения.
XPM3, текущая и единственная широко используемая версия, начинается с ASCII-комментария /* XPM */ со смещением в ноль байт, за которым следует определение массива C. Первая строка в массиве кодирует размеры изображения, количество цветов и количество ASCII-символов, представляющих каждый пиксель (1-4). Последующие строки определяют таблицу цветов, сопоставляя эти символьные коды с названиями цветов X11 (например, cornflowerblue) или шестнадцатеричными значениями RGB (#RRGGBB). Прозрачность выражается путем сопоставления кода пикселя со специальным именем None - механизм, который на несколько лет опередил альфа-прозрачность PNG.
Поскольку формат представляет собой чистый ASCII, файлы .xpm могут проходить через системы контроля версий, сравниваться (diff) и генерироваться программно без использования бинарных инструментов. Размер файла растет линейно в зависимости от количества пикселей, что делает формат непрактичным для фотографий, но хорошо подходящим для маленьких иконок и UI-битмапов.
XPM остается родным форматом иконок для многих тулкитов X11, таких как Motif и устаревшие версии GTK. Современные рабочие столы Linux предпочитают SVG или PNG для иконок, но приложения X11 по-прежнему часто поставляют XPM в качестве резервного варианта. GIMP, ImageMagick, XnView и IrfanView поддерживают этот формат в современных системах.
Безопасность и защита
РИСК: LOWXPM - это текстовый ASCII-формат; он не может содержать исполняемый код или макросы. Некорректно сформированные файлы XPM теоретически могут вызвать ошибки в библиотеках парсинга (существуют исторические CVE в libXpm в системах X11), но современные пропатченные версии не уязвимы. Риск для обычных пользователей ничтожен.
Детали формата
в двух словахПрограммы, открывающие файлы XPM
Технические подробности
глубокая спецификация| Кодировка файла | Простой текст ASCII (безопасен для 7-бит; также является валидным исходным кодом C) |
| Сигнатура файла | /* XPM */ со смещением 0 байт (XPM3); файлы XPM2 начинаются с ! XPM2 |
| Цветовая модель | Индексированная палитра; от 1 до 4 печатных ASCII-символов на пиксель сопоставляются с записями цветов |
| Спецификация цвета | Названия цветов X11 (например, cornflowerblue) или шестнадцатеричные значения #RRGGBB для каждой записи палитры |
| Прозрачность | Имя цвета X11 «None» сопоставляет код пикселя с полной прозрачностью (без отдельного байта альфа-канала) |
| Сжатие | Отсутствует - каждый пиксель хранится как 1-4 литеральных ASCII-символа |
| Версии формата | XPM1 (1989, монохромные макросы C), XPM2 (1990, автономные данные), XPM3 (1991, синтаксис C - текущая) |
| Максимальная палитра | До 65 536 одновременных индексированных цветов |
| MIME-тип | image/x-xpixmap |
| Размеры | Нет жесткого ограничения; размер файла растет линейно с количеством пикселей (каждый пиксель = chars_per_pixel ASCII-байт) |
| Интеграция с C | Содержимое файла может быть подключено через #include напрямую в исходный код C/C++ и скомпилировано без загрузчика |
| Выпущен | 1989 (XPM1, Daniel Dardailler, Bull Research Center) |
| Последняя версия | XPM3 (1991), documented in XPM Manual v3.4i (September 1996, Arnaud Le Hors) |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.xfree86.org |
Конвертации XPM
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах XPM.