Wat is het XPM-bestandsformaat?
Een .xpm-bestand slaat een rasterafbeelding op in het X PixMap-formaat - een formaat in platte tekst met geïndexeerde kleuren dat systeemeigen is voor het X Window System. In tegenstelling tot de meeste afbeeldingsformaten is een XPM-bestand ook geldige C-broncode: het declareert een statische string-array die C- en C++-programma's direct kunnen #include, zonder een aparte stap voor het laden van afbeeldingen.
XPM3, de huidige en enige veelgebruikte versie, begint met het ASCII-commentaar /* XPM */ op byte-offset nul, gevolgd door een C-arraydefinitie. De eerste string in de array codeert de afbeeldingsdimensies, het aantal kleuren en hoeveel ASCII-tekens elk pixel vertegenwoordigen (1-4). Opeenvolgende strings definiëren een kleurentabel, waarbij die tekencodes worden gekoppeld aan X11-kleurnamen (zoals cornflowerblue) of hex-RGB-waarden (#RRGGBB). Transparantie wordt uitgedrukt door een pixelcode te koppelen aan de speciale naam None - een mechanisme dat enkele jaren ouder is dan de alfa-transparantie van PNG.
Omdat het formaat pure ASCII is, kunnen .xpm-bestanden worden beheerd met versiebeheer, vergeleken met diff-tools en programmatisch worden gegenereerd zonder binaire tools. De bestandsgrootte groeit lineair met het aantal pixels, waardoor het formaat onpraktisch is voor foto's, maar zeer geschikt voor kleine pictogrammen en UI-bitmaps.
XPM blijft het systeemeigen pictogramformaat voor veel X11-toolkits zoals Motif en legacy GTK. Moderne Linux-desktops geven de voorkeur aan SVG of PNG voor pictogrammen, maar X11-applicaties leveren nog steeds vaak XPM-fallbacks mee. GIMP, ImageMagick, XnView en IrfanView ondersteunen het formaat allemaal op moderne systemen.
Beveiliging & veiligheid
RISICO: LOWXPM is een ASCII-formaat in platte tekst; het kan geen uitvoerbare code of macro's bevatten. Misvormde XPM-bestanden zouden theoretisch bugs kunnen veroorzaken in parsing-bibliotheken (er bestaan historische CVE's in libXpm op X11-systemen), maar moderne gepatchte versies zijn niet kwetsbaar. Het risico voor alledaagse gebruikers is verwaarloosbaar.
Formaatdetails
in een notendopProgramma's die XPM-bestanden openen
Technische details
diepe specificaties| Bestandscodering | Platte ASCII-tekst (7-bits veilig; ook geldige C-broncode) |
| Bestandssignatuur | /* XPM */ op byte-offset 0 (XPM3); XPM2-bestanden beginnen met ! XPM2 |
| Kleurmodel | Geïndexeerd palet; 1-4 afdrukbare ASCII-tekens per pixel verwijzen naar kleurvermeldingen |
| Kleurspecificatie | X11-kleurnamen (bijv. cornflowerblue) of #RRGGBB hex-waarden per paletvermelding |
| Transparantie | De X11-kleurnaam „None” koppelt een pixelcode aan volledige transparantie (geen aparte alfakanaal-byte) |
| Compressie | Geen - elke pixel opgeslagen als 1-4 letterlijke ASCII-tekens |
| Formaatversies | XPM1 (1989, monochrome C-macro's), XPM2 (1990, zelfstandige gegevens), XPM3 (1991, C-syntaxis - huidig) |
| Maximaal palet | Tot 65.536 gelijktijdige geïndexeerde kleuren |
| MIME-type | image/x-xpixmap |
| Dimensies | Geen harde limiet; bestandsgrootte groeit lineair met het aantal pixels (elke pixel = chars_per_pixel ASCII-bytes) |
| C-integratie | Bestandsinhoud kan direct worden #included in C/C++-broncode en gecompileerd zonder lader |
| Uitgebracht | 1989 (XPM1, Daniel Dardailler, Bull Research Center) |
| Laatste versie | XPM3 (1991), documented in XPM Manual v3.4i (September 1996, Arnaud Le Hors) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.xfree86.org |
XPM conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over XPM-bestanden.