Hva er XPM-filformatet?
En .xpm-fil lagrer et rasterbilde i formatet X PixMap - et format med indekserte farger i ren tekst som er hjemmehørende i X Window System. Til forskjell fra de fleste bildeformater er en XPM-fil også gyldig C-kildekode: den deklarerer en statisk strengmatrise som C- og C++-programmer kan #include direkte, uten et separat bildelastingssteg.
XPM3, den nåværende og eneste utbredte versjonen, starter med ASCII-kommentaren /* XPM */ ved byte-offset null, etterfulgt av en C-matrise-definisjon. Den første strengen i matrisen koder bildedimensjonene, antall farger og hvor mange ASCII-tegn som representerer hver piksel (1-4). Påfølgende strenger definerer en fargetabell som kobler disse tegnkodene til X11-fargenavn (som cornflowerblue) eller heksadesimale RGB-verdier (#RRGGBB). Gjennomsiktighet uttrykkes ved å koble en pikselkode til det spesielle navnet None - en mekanisme som eksisterte flere år før PNG fikk alfa-gjennomsiktighet.
Fordi formatet er ren ASCII, kan .xpm-filer versjonskontrolleres, sammenlignes (diff) og genereres programmatisk uten binærverktøy. Filstørrelsen vokser lineært med antall piksler, noe som gjør formatet upraktisk for fotografier, men godt egnet for små ikoner og UI-bitmaps.
XPM er fortsatt det naturlige ikonformatet for mange X11-verktøysett som Motif og eldre GTK. Moderne Linux-skrivebord foretrekker SVG eller PNG for ikoner, men X11-applikasjoner leveres ofte fortsatt med XPM som reserveløsning. GIMP, ImageMagick, XnView og IrfanView støtter alle formatet på moderne systemer.
Sikkerhet og trygghet
RISIKO: LOWXPM er et ASCII-format i ren tekst; det kan ikke inneholde kjørbar kode eller makroer. Misformede XPM-filer kan teoretisk sett utløse feil i parsningsbiblioteker (historiske CVE-er finnes i libXpm på X11-systemer), men moderne, oppdaterte versjoner er ikke sårbare. Risikoen for vanlige brukere er ubetydelig.
Formatdetaljer
i et nøtteskallProgrammer som åpner XPM-filer
Tekniske detaljer
dyp spesifikasjon| Filkoding | Ren ASCII-tekst (7-bit sikker; også gyldig C-kildekode) |
| Filsignatur | /* XPM */ ved byte-offset 0 (XPM3); XPM2-filer starter med ! XPM2 |
| Fargemodell | Indeksert palett; 1-4 skrivbare ASCII-tegn per piksel kobles til fargeoppføringer |
| Fargespesifikasjon | X11-fargenavn (f.eks. cornflowerblue) eller #RRGGBB heksverdier per palettoppføring |
| Gjennomsiktighet | X11-fargenavnet «None» kobler en pikselkode til full gjennomsiktighet (ingen separat alfakanal-byte) |
| Komprimering | Ingen - hver piksel lagres som 1-4 bokstavelige ASCII-tegn |
| Formatversjoner | XPM1 (1989, monokrome C-makroer), XPM2 (1990, frittstående data), XPM3 (1991, C-syntaks - nåværende) |
| Maksimal palett | Opptil 65 536 samtidige indekserte farger |
| MIME-type | image/x-xpixmap |
| Dimensjoner | Ingen hard grense; filstørrelsen vokser lineært med antall piksler (hver piksel = tegn_per_piksel ASCII-bytes) |
| C-integrasjon | Filinnholdet kan inkluderes med #include direkte i C/C++ kildekode og kompileres uten en laster |
| Utgitt | 1989 (XPM1, Daniel Dardailler, Bull Research Center) |
| Siste versjon | XPM3 (1991), documented in XPM Manual v3.4i (September 1996, Arnaud Le Hors) |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | www.xfree86.org |
XPM-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om XPM-filer.
Ofte stilte spørsmål
Hva er en XPM-fil?
Hvordan åpner jeg en XPM-fil på Windows?
Hvordan konverterer jeg XPM til PNG?
Kan jeg åpne en XPM-fil i et tekstredigeringsprogram?
Hvorfor brukes XPM i Linux-programmering?
#include) direkte i C-kildekoden ved kompilering, noe som bygger bildet inn i den binære filen uten separate ressursfiler. Dette var standardmetoden for X11-appikoner på 1990- og 2000-tallet.