Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

XPM [ править ]

Формат XPM - это массив строк, состоящий из шести различных разделов:

статический  символ *  < имя_переменной > []  =  { < Значения > < Цвета > < Пиксели > < Расширения > };

Это черно-белое изображение в первом (1989 г.) формате XPM.

#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 []  =  { "abaabaababaaabaabababaabaabaababaabaaababaabaaab" , // и так далее для 48 строк с 48 пикселями

Раздел значений содержит ширину, высоту, количество цветов и количество символов на пиксель.

XPM2 [ править ]

XPM2 упрощает формат, удаляя весь код C. Пример:

! XPM248 4 2 1ac #FFFFFFbc # 000000abaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaababaabaababaaabaabababaabaabaababaabaaababaabaaab

Это файл XPM2 с шириной 48, высотой 4, 2 цветами и 1 символом на пиксель. Известно, что один инструмент использует только от 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 =1 000 000 000 цветов (сравните с GIF , который поддерживает только 256).

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

XPM3 [ править ]

Другие стили XPM1 и XPM3 предназначены для использования в исходном коде C, например:

/ * XPM * / static  char  *  XFACE []  =  { / * <Значения> * / / * <ширина / столбцы> <высота / строки> <цвета> <символов на пиксель> * / "48 4 2 1" , / * <Цвета> * / "ас #ffffff" , "BC # 000000" , / * <Пиксели> * / "abaabaababaaabaabababaabaabaababaabaaababaabaaab" , "abaabaababaaabaabababaabaabaababaabaaababaabaaab" , "abaabaababaaabaabababaabaabaababaabaaababaabaaab" , "abaabaababaaabaabababaabaabaababaabaaababaabaaab" };

Последний формат - XPM3, общий формат, используемый для системы X Window примерно с 1991 года. C означает «цвет», можно добавить m для «монохромного» вывода, g для «оттенков серого» и s для «символического», объясняя, что должен делать определенный цвет.

Помимо названий цветов X11, название noneуказывает на прозрачность. [4] [5]

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

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

Сравнение с другими форматами [ править ]

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

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

Версия XBM:

#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 ,  0x60  };
Blarg.xpm (XPM2), обработанный XnView

Версия XPM2:

! XPM216 7 2 1* с # 000000. c #ffffff** .. * ...........*. *. * ...........** .. * .. **. ** .. ***. *. *. *. *. * .. *. *** .. * .. **. * ... **............... *............. **.

Версия XPM3:

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

PBM файл:

P116 71 1 0 0 1 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 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 10 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0

Поддержка приложений [ править ]

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

Х11 LibXpm уязвимость была зафиксирована в 2005 году [10] FFmpeg версии 3.3 или более поздней версии может декодировать XPM. [11]

См. Также [ править ]

  • X Window System (X11) и названия цветов X11
  • PBM (моно), PGM (оттенки серого), PPM (цветной), PNM (любой)

Ссылки [ править ]

  1. ^ Тип MIME .xpmне зарегистрирован в IANA
  2. ^ a b Ле Хорс, Арно (1 февраля 1996 г.). Руководство по XPM: формат X PixMap (PDF) . Groupe Bull . С. 7–8 . Проверено 1 января 2014 .
  3. ^ Daniel Dardailler (1996-07-15). «История XPM» . Колас Нахабу и Арно Ле Хорс. Архивировано из оригинала на 1997-06-07 . Проверено 1 января 2014 .
  4. ^ "FAQ XPM" . Фонд X.Org . 1996 . Проверено 12 марта 2016 .
  5. ^ «Сводка формата файла XPM» . Энциклопедия форматов графических файлов, 2-е издание . ISBN 1-56592-161-5. Проверено 1 января 2014 .
  6. Нир Софер. «Расширение .xpm» . Проверено 12 января 2014 .
  7. ^ "Тип файла: X Windows Pixmap" . Ассоциация файлов Windows . Microsoft . 2013 . Проверено 12 января 2014 .
  8. ^ Gravatar неофициальный, без XPM2
  9. ^ Стив Кинзлер (2005). "Архив Пикона" . Проверено 6 января 2014 . пиконы представлены в монохромном формате XBM или цветном формате XPM и GIF.
  10. ^ "Библиотека libXpm содержит несколько уязвимостей целочисленного переполнения" . US-CERT . 2005-10-06. ВУ № 537878 . Проверено 1 января 2014 .
  11. ^ "FFmpeg 3.3" Гильберт " " . FFmpeg . 2017-04-13 . Проверено 28 октября 2017 . Декодер XPM