Vad är filformatet XPM?
En .xpm-fil lagrar en rasterbild i formatet X PixMap - ett format i klartext med indexerade färger som är infött för X Window System. Till skillnad från de flesta bildformat är en XPM-fil även giltig C-källkod: den deklarerar en statisk strängmatris som C- och C++-program kan #include direkt, utan ett separat bildladdningssteg.
XPM3, den nuvarande och enda allmänt använda versionen, börjar med ASCII-kommentaren /* XPM */ vid byte-offset noll, följt av en C-matrisdefinition. Den första strängen i matrisen kodar bildens dimensioner, antal färger och hur många ASCII-tecken som representerar varje pixel (1-4). Efterföljande strängar definierar en färgtabell som mappar dessa teckenkoder till X11-färgnamn (som cornflowerblue) eller hex-RGB-värden (#RRGGBB). Transparens uttrycks genom att mappa en pixelkod till det speciella namnet None - en mekanism som föregick PNG alfa-transparens med flera år.
Eftersom formatet är ren ASCII kan .xpm-filer versionshanteras, diffas och genereras programmatiskt utan binära verktyg. Filstorleken växer linjärt med pixelantalet, vilket gör formatet opraktiskt för fotografier men väl lämpat för små ikoner och UI-bitmaps.
XPM förblir det infödda ikonformatet för många X11-verktygslådor som Motif och äldre GTK. Moderna Linux-skrivbord föredrar SVG eller PNG för ikoner, men X11-applikationer levereras fortfarande ofta med XPM som reservalternativ. GIMP, ImageMagick, XnView och IrfanView stöder alla formatet på moderna system.
Säkerhet & trygghet
RISK: LOWXPM är ett ASCII-format i klartext; det kan inte innehålla exekverbar kod eller makron. Felaktigt utformade XPM-filer skulle teoretiskt kunna utlösa buggar i parsningsbibliotek (historiska CVE:er finns i libXpm på X11-system), men moderna patchade versioner är inte sårbara. Risken för vardagliga användare är försumbar.
Formatdetaljer
i ett nötskalProgram som öppnar XPM-filer
Tekniska detaljer
djup specifikation| Filkodning | Klartext i ASCII (7-bitars säker; även giltig C-källkod) |
| Filsignatur | /* XPM */ vid byte-offset 0 (XPM3); XPM2-filer börjar med ! XPM2 |
| Färgmodell | Indexerad palett; 1-4 utskrivbara ASCII-tecken per pixel mappar till färgposter |
| Färgspecifikation | X11-färgnamn (t.ex. cornflowerblue) eller #RRGGBB hex-värden per palettpost |
| Transparens | Färgnamnet «None» i X11 mappar en pixelkod till full transparens (ingen separat alfakanal-byte) |
| Komprimering | Ingen - varje pixel lagras som 1-4 bokstavliga ASCII-tecken |
| Formatversioner | XPM1 (1989, monokroma C-makron), XPM2 (1990, fristående data), XPM3 (1991, C-syntax - nuvarande) |
| Maximal palett | Upp till 65 536 samtidiga indexerade färger |
| MIME-typ | image/x-xpixmap |
| Dimensioner | Ingen hård gräns; filstorleken växer linjärt med pixelantalet (varje pixel = chars_per_pixel ASCII-bytes) |
| C-integration | Filinnehållet kan inkluderas via #include direkt i C/C++-källkod och kompileras utan en laddare |
| Släppt | 1989 (XPM1, Daniel Dardailler, Bull Research Center) |
| Senaste version | XPM3 (1991), documented in XPM Manual v3.4i (September 1996, Arnaud Le Hors) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | www.xfree86.org |
XPM-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om XPM-filer.