Введение

Формат файла изображения X PixMap (XPM) — это формат файла изображения, используемый оконной системой X Window System, разработанный в 1989 году Дэниелом Дардейлером и Коласом Нахабу, работавшими в исследовательском центре Bull в Софии Антиполисе (Франция), и впоследствии усовершенствованный Арно Ле Орсом. Он предназначен главным образом для создания растровых изображений значков и поддерживает прозрачные пиксели. Являясь развитием более раннего синтаксиса XBM, это простой текстовый файл в формате XPM2 или синтаксисе языка программирования C, который можно включить в исходный код программы на C. Функция "символических" значений позволяет изменять цвета в зависимости от контекста их использования. Например, код наподобие `s border c blue` может быть адаптирован под синий фон.

Многоцветная кодировка

Известно, что один инструмент использует только символы от 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.