Hvad er XPM-filformatet?
En .xpm-fil gemmer et rasterbillede i X PixMap-formatet - et format med almindelig tekst og indekserede farver, der er hjemmehørende i X Window System. I modsætning til de fleste billedformater er en XPM-fil også gyldig C-kildekode: den erklærer et statisk streng-array, som C- og C++-programmer kan #include direkte uden et separat trin til billedindlæsning.
XPM3, den nuværende og eneste udbredte version, begynder med ASCII-kommentaren /* XPM */ ved byte-offset nul, efterfulgt af en C-array-definition. Den første streng i arrayet koder for billeddimensioner, antal farver og hvor mange ASCII-tegn der repræsenterer hver pixel (1-4). Efterfølgende strenge definerer en farvetabel, der mapper disse tegnkoder til X11-farvenavne (såsom cornflowerblue) eller hex-RGB-værdier (#RRGGBB). Gennemsigtighed udtrykkes ved at mappe en pixelkode til det specielle navn None - en mekanisme, der går forud for PNG alfa-gennemsigtighed med flere år.
Da formatet er ren ASCII, kan .xpm-filer versionsstyres, diff'es og genereres programmatisk uden binære værktøjer. Filstørrelsen vokser lineært med pixelantallet, hvilket gør formatet upraktisk til fotografier, men velegnet til små ikoner og UI-bitmaps.
XPM forbliver det oprindelige ikonformat for mange X11-toolkits såsom Motif og ældre GTK. Moderne Linux-skriveborde foretrækker SVG eller PNG til ikoner, men X11-applikationer leveres stadig ofte med XPM-fallbacks. GIMP, ImageMagick, XnView og IrfanView understøtter alle formatet på moderne systemer.
Sikkerhed og tryghed
RISIKO: LOWXPM er et ASCII-format i almindelig tekst; det kan ikke indeholde eksekverbar kode eller makroer. Misdannede XPM-filer kunne teoretisk set udløse fejl i parsing-biblioteker (historiske CVE'er findes i libXpm på X11-systemer), men moderne patchede versioner er ikke sårbare. Risikoen for hverdagsbrugere er forsvindende lille.
Formatdetaljer
kort fortaltProgrammer der åbner XPM-filer
Tekniske detaljer
dyb specifikation| Filkodning | Almindelig ASCII-tekst (7-bit sikker; også gyldig C-kildekode) |
| Filsignatur | /* XPM */ ved byte-offset 0 (XPM3); XPM2-filer starter med ! XPM2 |
| Farvemodel | Indekseret palet; 1-4 printbare ASCII-tegn pr. pixel mapper til farveindgange |
| Farvespecifikation | X11-farvenavne (f.eks. cornflowerblue) eller #RRGGBB hex-værdier pr. paletindgang |
| Gennemsigtighed | None X11-farvenavnet mapper en pixelkode til fuld gennemsigtighed (ingen separat alfa-kanal byte) |
| Komprimering | Ingen - hver pixel gemmes som 1-4 bogstavelige ASCII-tegn |
| Formatversioner | XPM1 (1989, monokrome C-makroer), XPM2 (1990, selvstændige data), XPM3 (1991, C-syntaks - nuværende) |
| Maksimal palet | Op til 65.536 samtidige indekserede farver |
| MIME-type | image/x-xpixmap |
| Dimensioner | Ingen hård grænse; filstørrelsen vokser lineært med pixelantallet (hver pixel = chars_per_pixel ASCII-bytes) |
| C-integration | Filindhold kan #includes direkte i C/C++ kildekode og kompileres uden en indlæser |
| Udgivet | 1989 (XPM1, Daniel Dardailler, Bull Research Center) |
| Seneste version | XPM3 (1991), documented in XPM Manual v3.4i (September 1996, Arnaud Le Hors) |
| Åben standard | Ja · royaltyfri |
| Specifikation | www.xfree86.org |
XPM-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om XPM-filer.