Введение
Формат файла изображения X PixMap (XPM) — это формат файла изображения, используемый оконной системой X Window System, разработанный в 1989 году Дэниелом Дардейлером и Коласом Нахабу, работавшими в исследовательском центре Bull в Софии Антиполисе (Франция), и впоследствии усовершенствованный Арно Ле Орсом. Он предназначен главным образом для создания растровых изображений значков и поддерживает прозрачные пиксели. Являясь развитием более раннего синтаксиса XBM, это простой текстовый файл в формате XPM2 или синтаксисе языка программирования C, который можно включить в исходный код программы на C. Функция "символических" значений позволяет изменять цвета в зависимости от контекста их использования. Например, код наподобие `s border c blue` может быть адаптирован под синий фон.
X PixMap (XPM) is an image file format used by the X Window System, created in 1989 by Daniel Dardailler and Colas Nahaboo working at Bull Research Center at Sophia Antipolis, France, and later enhanced by Arnaud Le Hors. It is intended primarily for creating icon pixmaps, and supports transparent pixels. Derived from the earlier XBM syntax, it is a plain text file in the XPM2 format or of a C programming language syntax, which can be included in a C program file. The "symbolic" feature permits adjusting colors depending on the context where they are used. Code such as s border c blue could be adjusted on a blue background.
Многоцветная кодировка
Известно, что один инструмент использует только символы от a до p для 16 цветов, переключаясь на aa до dp для 64 цветов, но при этом продолжает считывать односимвольные кодировки для 64 цветов; сравните с Base64. При большем количестве цветов коды используют больше символов, например, от aa до pp для 16 × 16 = 256 цветов. Это менее удобно для текстовых редакторов, так как строка "ab" может оказаться серединой двух соседних пикселей "dabc". Пробелы допустимы в качестве цветового кода, но это может быть не лучшей идеей в зависимости от используемого текстового редактора. Без управляющих кодов, обратной косой черты и кавычек (необходимых в XPM1 и XPM3) для односимвольных цветовых кодов доступно 128 − 33 − 2 = 93 символа ASCII. Упрощенный пример: 90 символов US ASCII можно разбить на девять неперекрывающихся наборов по 10 символов. Таким образом, однозначные строки из девяти символов могут задавать цвет каждого пикселя по индексу палитры XPM, поддерживая до 10^9 = 1000000000 цветов (в отличие от GIF, который поддерживает только 256). Для XPM2 понятно, сколько строк относится к изображению – две строки заголовка, вторая из которых указывает количество цветовых кодов (2 строки в приведенном выше примере) и строк (высота 4 в приведенном выше примере), например, 2 + 2 + 4 = 8 строк.
Поддержка приложений
ACDSee, Amaya, CorelDRAW, GIMP, ImageMagick, IrfanView (плагин для форматов), PaintShop Pro, PMView, Photoshop (плагины) и XnView, среди прочих, поддерживают XPM. Gravatar и пиконы также поддерживают XPM. Уязвимость в X11 libXpm была устранена в 2005 году, и еще три — в 2023 году. FFmpeg версии 3.3 и выше способен декодировать XPM.