X ПиксМап
![]() Некоторые текстовые редакторы , например gvim , могут отображать изображения xpm в графическом виде. | |
Расширение имени файла | .xpm |
---|---|
Тип интернет-СМИ |
изображение/x-xpixmap [1] |
Разработано | Бычье исследование |
Тип формата | Форматы файлов изображений |
Расширено с | ХБМ |
Открытый формат ? | да |
X PixMap ( XPM ) — формат файла изображения , используемый системой X Window , созданный в 1989 году Даниэлем Дардайлером и Коласом Нахабу, работающими в Исследовательском центре быков в Софии-Антиполисе , Франция, и позже улучшенный Арно Ле Хорсом. [2] [3]
Он предназначен в первую очередь для создания значков растровых изображений и поддерживает прозрачные пиксели . Созданный на основе более раннего синтаксиса XBM , он представляет собой обычный текстовый файл в формате XPM2 или синтаксис языка программирования C , который может быть включен в файл программы C. [2]
История
[ редактировать ]ХРМ1
[ редактировать ]Первый (1989 г.) формат XPM относительно похож на формат XBM. [а] По сравнению с 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[] = {
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
// and so on for 48 rows with 48 pixels
ХРМ2
[ редактировать ]XPM2 (1990) упрощает формат, удаляя весь C. код [б] [с] Структура упрощена до
! XPM2 <Values> <Colors> <Pixels> <Optional Extensions>
- Раздел значений описывает общий размер изображения, аналогичный
#define
заявления. - Раздел цвета определяет значения и новую концепцию «типа» цвета. Типами могут быть c для «цвета», m для «монохромного» вывода, g для «оттенков серого» и s для «символического», что объясняет, что должен делать определенный цвет.
- Пиксели и дополнительные расширения остаются в исходном формате.
Приведенный выше файл с шириной 48, высотой 4, 2 цветами и 1 символом на пиксель будет выглядеть так:
! XPM2 48 4 2 1 a c #FFFFFF b c #000000 abaabaababaaabaabababaabaabaababaabaaababaabaaab abaabaababaaabaabababaabaabaababaabaaababaabaaab abaabaababaaabaabababaabaabaababaabaaababaabaaab abaabaababaaabaabababaabaabaababaabaaababaabaaab
Цвета
[ редактировать ]Помимо шестнадцатеричных кодов, цветами могут быть любые названия цветов 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",
"a c #ffffff",
"b c #000000",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab"
};
Если строка «значения» содержит шесть цифр вместо четырех, дополнительные значения указывают координаты «горячей точки», где 0 0 — верхний левый угол поля, содержащего значок и значение по умолчанию. «Точка доступа» используется для указателей мыши и подобных приложений.
Сравнение с другими форматами
[ редактировать ]
Следующий код отображает один и тот же файл 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, 0x60 };

Версия XPM2:
! XPM2 16 7 2 1 * c #000000 . c #ffffff **..*........... *.*.*........... **..*..**.**..** *.*.*.*.*.*..*.* **..*..**.*...** ...............* .............**.
Версия XPM3:
/* XPM */
static char * blarg_xpm[] = {
"16 7 2 1",
"* c #000000",
". c #ffffff",
"**..*...........",
"*.*.*...........",
"**..*..**.**..**",
"*.*.*.*.*.*..*.*",
"**..*..**.*...**",
"...............*",
".............**."
};
PBM-файл:
P1 16 7 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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]
См. также
[ редактировать ]- Netpbm — набор инструментов для манипулирования изображениями
- CLUT – в компьютерной графике ограниченный набор доступных цветов.
Примечания
[ редактировать ]- ^ Для описания этого формата вместо руководства (не найденного в Интернете) используйте исходный код конвертера xpm-contrib (ранее входившего в состав libXpm) (xpm2ppm, xpm1to3, xpm1to2c).
- ^ Также допустимо использовать синтаксис языка программирования для строковых массивов, но сертифицирован только синтаксис C. Синтаксис «XPM2 C» в конечном итоге стал единственным форматом в XPM версии 3.
- ^ Ссылки по этому синтаксису см. в https://gitlab.freedesktop.org/xorg/lib/libxpm/-/blob/master/NEWS.old и в разделе «история» руководства по libXpm 3.4.
Ссылки
[ редактировать ]- ^ .xpm Тип MIME не зарегистрирован в IANA
- ^ Jump up to: а б Ле Хорс, Арно (1 февраля 1996 г.). Руководство по XPM: формат X PixMap (PDF) . Группа Булл . стр. 7–8 . Проверено 1 января 2014 г.
- ^ Дэниел Дардайлер (15 июля 1996 г.). «История XPM» . Колас Нахабу и Арно Ле Хорс. Архивировано из оригинала 7 июня 1997 г. Проверено 1 января 2014 г.
- ^ «Часто задаваемые вопросы по XPM» . Фонд X.Org . 1996 год . Проверено 12 марта 2016 г.
- ^ Мюррей, Джеймс Д.; Ванрипер, Уильям (1996). Краткое описание формата файла XPM . О'Рейли и партнеры. ISBN 1-56592-161-5 . Проверено 1 января 2014 г.
{{cite book}}
:|work=
игнорируется ( помогите ) - ^ Нир Софер «Расширение .xpm» . Проверено 12 января 2014 г.
- ^ «Тип файла: X Windows Pixmap» . Ассоциация файлов Windows . Майкрософт . 2013 . Проверено 12 января 2014 г.
- ^ Граватар неофициальный, нет XPM2
- ^ Стив Кинзлер (2005). «Архив Пиконов» . Проверено 6 января 2014 г.
значки представлены либо в монохромном формате XBM, либо в цветном формате XPM и GIF.
- ^ «Библиотека libXpm содержит несколько уязвимостей целочисленного переполнения» . США-CERT . 06.10.2005. ВУ#537878 . Проверено 1 января 2014 г.
- ^ «Рекомендации по безопасности X.Org: проблемы с обработкой файлов XPM в libXpm до версии 3.5.15» . 17 января 2023 г.
- ^ «FFmpeg 3.3 «Гильберт» » . FFmpeg . 13 апреля 2017 г. Проверено 28 октября 2017 г.
XPM-декодер
См. также
[ редактировать ]- X Window System (X11) и названия цветов X11
- PBM (моно), PGM (оттенки серого), PPM (цветной), PNM (любой)