stringtranslate.com

X ПиксМап

X PixMap ( XPM ) — формат файла изображения , используемый системой X Window , созданный в 1989 году Даниэлем Дардайлером и Коласом Нахабу, работающими в Исследовательском центре быков в Софии-Антиполисе , Франция, и позже улучшенный Арно Ле Хорсом. [2] [3]

Он предназначен в первую очередь для создания растровых изображений значков и поддерживает прозрачные пиксели . Созданный на основе более раннего синтаксиса XBM , он представляет собой обычный текстовый файл в формате XPM2 или синтаксис языка программирования C , который может быть включен в файл программы C. [2]

История

ХРМ1

Первый (1989 г.) формат XPM относительно похож на формат XBM. [a] По сравнению с XBM, он использует дополнительные макроопределения и переменные для индексированных цветов и заменяет биты символами для описания изображения. Ниже приведено черно-белое изображение в формате XPM 1989 года.

#define XFACE_format 1 #define XFACE_width 48 #define XFACE_height 48 #define XFACE_ncolors 2 #define XFACE_chars_per_pixel 1 static char * XFACE_colors [] = { "a" , "#ffffff" , "b" , "#000000" }; static char * XFACE_pixels [] = { "abaabaababaaabaababaabaabaabaabaabaaababaabaaab" , // и так далее для 48 строк по 48 пикселей          

ХРМ2

XPM2 (1990) упрощает формат, удаляя весь код C. [b] [c] Структура упрощается до

! ХРМ2<Значения><Цвета><Пиксели><Дополнительные расширения>

Приведенный выше файл с шириной 48, высотой 4, 2 цветами и 1 символом на пиксель будет выглядеть так:

! ХРМ248 4 2 1ак #FFFFFFдо н.э. #000000абаабаабабааабаабабаабаабаабаабабаааабабааабабаабаабабааабаабабаабаабаабаабабаааабабааабабаабаабабааабаабабаабаабаабаабабаааабабааабабаабаабабааабаабабаабаабаабаабабаааабабаааб

Цвета

Помимо шестнадцатеричных кодов, цветами могут быть любые названия цветов X11 . Кроме того, Noneуказывает на прозрачность. [4] [5]

«Символическая» функция позволяет настраивать цвета в зависимости от контекста, в котором они используются. Код такой, какой s border c blueможно корректировать на синем фоне.

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

Известно, что один инструмент использует только от a до p для 16 цветов, переключаясь на aa до dp для 64 цветов, но по-прежнему считывает односимвольные кодировки для 64 цветов; сравните Base64 .

При большем количестве цветов в кодах используется больше символов, например, от аа до pp для 16 × 16 = 256 цветов. Это менее полезно для текстовых редакторов, поскольку строка ab на самом деле может быть серединой двух соседних пикселей dabc . В качестве цветового кода разрешены пробелы, но это может быть плохой идеей в зависимости от используемого текстового редактора. Без управляющих кодов, обратной косой черты и кавычек (необходимы в XPM1 и XPM3) 128–33–2 = 93 символа ASCII доступны для односимвольных цветовых кодов.

Упрощенный пример: 90 символов US-ASCII можно объединить в девять непересекающихся наборов по 10 символов. Таким образом, однозначные строки из девяти символов могут задать цвет каждого пикселя по его индексу палитры XPM, вплоть до 10 9 =1 000 000 000 цветов (сравните с GIF , который поддерживает только 256).

Для XPM2 ясно, сколько строк принадлежит изображению — две строки заголовка, вторая строка заголовка сообщает количество цветовых кодов (2 строки в примере выше) и строк (высота 4 в примере выше), например 2 + 2. + 4 = 8 строк.

ХРМ3

Текущий и последний формат — XPM3 (1991). Он заново представляет оболочку C, но вместо явного отображения структуры файла сохраняемые строки по существу идентичны XPM2.

/* XPM */ static char * XFACE [] = { "48 4 2 1" , "ac #ffffff" , "bc #000000" , "abaabaababaaabaababaabaabaabaabaabaaababaabaaab" , "abaabaababaaabaababaabaabaabaabaaababaabaaab" , "abaabaabaaabaababaabaabaabaabaaababaaab" , " абаабаабабааабаабабабаабаабаабабаабааабабаабаааб" };     

Если строка «значения» содержит шесть цифр вместо четырех, дополнительные значения указывают координаты «горячей точки», где 0 0 — верхний левый угол поля, содержащего значок и значение по умолчанию. «Точка доступа» используется для указателей мыши и подобных приложений.

Сравнение с другими форматами

Файл Blarg открыт в окне программы

Следующий код отображает один и тот же файл blar в форматах XBM , XPM и PBM .

ХБМ-версия:

#define test_width 16 #define test_height 7 static char test_bits [] = { 0x13 , 0x00 , 0x15 , 0x00 , 0x93 , 0xcd , 0x55 , 0xa5 , 0x93 , 0xc5 , 0x00 , 0x80 , 0x00 , 0 х60 };                 
Blarg.xpm (XPM2), визуализируемый XnView

Версия XPM2:

! ХРМ216 7 2 1* с#000000. с #ffffff**..*...........*.*.*...........**..*..**.**..***.*.*.*.*.*..*.***..*..**.*...**.............*.............**.

Версия XPM3:

/* XPM */ static char * blarg_xpm [] = { "16 ​​7 2 1" , "* c #000000" , ". c #ffffff" , "**..*.......... ." , "*.*.*..........." , "**..*..**.**..**" , "*.*.*.*. *.*..*.*" , "**..*..**.*...**" , "...............*" , ". ............**." };     

PBM-файл:

П116 71 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 01 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 01 1 0 0 1 0 0 1 1 0 1 1 0 0 1 11 0 1 0 1 0 1 0 1 0 1 0 0 1 0 11 1 0 0 1 0 0 1 1 0 1 0 0 0 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0

Поддержка приложения

ACDSee , Amaya , CorelDRAW , GIMP , ImageMagick , IrfanView (плагин форматов), PaintShop Pro , PMView , Photoshop (плагины) и XnView , среди прочих, поддерживают XPM. [6] [7] Gravatar и picons также поддерживают XPM. [8] [9]

Уязвимость X11 libXpm была исправлена ​​в 2005 году [10] и еще три в 2023 году. [ 11]

FFmpeg версии 3.3 или новее может декодировать XPM. [12]

Смотрите также

Примечания

  1. ^ Для описания этого формата вместо руководства (не найденного в Интернете) используйте исходный код конвертера xpm-contrib (ранее входившего в состав libXpm) (xpm2ppm, xpm1to3, xpm1to2c).
  2. ^ Также допустимо использовать синтаксис языка программирования для строковых массивов, но сертифицирован только синтаксис C. Синтаксис «XPM2 C» в конечном итоге стал единственным форматом в XPM версии 3.
  3. ^ Ссылки по этому синтаксису см. в https://gitlab.freedesktop.org/xorg/lib/libxpm/-/blob/master/NEWS.old и в разделе «история» руководства по libXpm 3.4.

Рекомендации

  1. ^ Тип MIME .xpm не зарегистрирован в IANA
  2. ^ аб Ле Хорс, Арно (1 февраля 1996 г.). Руководство по XPM: формат X PixMap (PDF) . Группа Булл . стр. 7–8 . Проверено 1 января 2014 г.
  3. ^ Дэниел Дардайлер (15 июля 1996 г.). «История XPM». Колас Нахабу и Арно Ле Хорс. Архивировано из оригинала 7 июня 1997 г. Проверено 1 января 2014 г.
  4. ^ «Часто задаваемые вопросы по XPM» . Фонд X.Org . 1996 год . Проверено 12 марта 2016 г.
  5. ^ Мюррей, Джеймс Д.; Ванрипер, Уильям (1996). Краткое описание формата файла XPM . О'Рейли и партнеры. ISBN 1-56592-161-5. Проверено 1 января 2014 г. {{cite book}}: |work=игнорируется ( помощь )
  6. ^ Нир Софер. «Расширение .xpm» . Проверено 12 января 2014 г.
  7. ^ «Тип файла: растровое изображение X Windows» . Ассоциация файлов Windows . Майкрософт . 2013 . Проверено 12 января 2014 г.
  8. ^ Граватар неофициальный, нет XPM2
  9. ^ Стив Кинзлер (2005). «Архив Пиконов» . Проверено 6 января 2014 г. значки представлены либо в монохромном формате XBM, либо в цветном формате XPM и GIF.
  10. ^ «Библиотека libXpm содержит несколько уязвимостей целочисленного переполнения». США-СЕРТ . 06.10.2005. ВУ#537878 . Проверено 1 января 2014 г.
  11. ^ «Рекомендации по безопасности X.Org: проблемы с обработкой файлов XPM в libXpm до версии 3.5.15» . 17 января 2023 г.
  12. ^ «FFmpeg 3.3 «Гильберт»» . FFmpeg . 13 апреля 2017 г. Проверено 28 октября 2017 г. XPM-декодер

Смотрите также

Внешние ссылки