Co to jest format pliku XPM?
Plik .xpm przechowuje obraz rastrowy w formacie X PixMap - tekstowym formacie kolorów indeksowanych natywnym dla systemu X Window System. W przeciwieństwie do większości formatów obrazów, plik XPM jest również poprawnym kodem źródłowym C: deklaruje statyczną tablicę ciągów znaków, którą programy C i C++ mogą bezpośrednio dołączyć za pomocą dyrektywy #include, bez konieczności stosowania oddzielnego kroku ładowania obrazu.
XPM3, obecna i jedyna powszechnie używana wersja, zaczyna się od komentarza ASCII /* XPM */ na zerowym offsecie bajtowym, po którym następuje definicja tablicy C. Pierwszy ciąg w tablicy koduje wymiary obrazu, liczbę kolorów oraz liczbę znaków ASCII reprezentujących każdy piksel (1-4). Kolejne ciągi definiują tablicę kolorów, mapując te kody znakowe na nazwy kolorów X11 (takie jak cornflowerblue) lub wartości szesnastkowe RGB (#RRGGBB). Przezroczystość jest wyrażana poprzez mapowanie kodu piksela na specjalną nazwę None - mechanizm ten wyprzedził przezroczystość alfa w formacie PNG o kilka lat.
Ponieważ format jest czystym ASCII, pliki .xpm mogą być objęte kontrolą wersji, porównywane (diff) i generowane programowo bez narzędzi binarnych. Rozmiar pliku rośnie liniowo wraz z liczbą pikseli, co czyni ten format niepraktycznym dla fotografii, ale doskonale nadaje się do małych ikon i bitmap interfejsu użytkownika.
XPM pozostaje natywnym formatem ikon dla wielu toolkitów X11, takich jak Motif i starsze wersje GTK. Nowoczesne pulpity Linux preferują SVG lub PNG dla ikon, ale aplikacje X11 wciąż często dostarczają pliki XPM jako rozwiązanie awaryjne. GIMP, ImageMagick, XnView i IrfanView obsługują ten format na nowoczesnych systemach.
Bezpieczeństwo
RYZYKO: LOWXPM to format tekstowy ASCII; nie może zawierać kodu wykonywalnego ani makr. Nieprawidłowo sformułowane pliki XPM mogłyby teoretycznie wywołać błędy w bibliotekach parsujących (istnieją historyczne błędy CVE w libXpm w systemach X11), ale nowoczesne, załatane wersje nie są podatne. Ryzyko dla zwykłych użytkowników jest znikome.
Szczegóły formatu
w pigułceProgramy otwierające pliki XPM
Szczegóły techniczne
specyfikacja| Kodowanie pliku | Zwykły tekst ASCII (bezpieczny dla 7-bitów; również poprawny kod źródłowy C) |
| Sygnatura pliku | /* XPM */ na offsecie bajtowym 0 (XPM3); pliki XPM2 zaczynają się od ! XPM2 |
| Model kolorów | Paleta indeksowana; 1-4 drukowalne znaki ASCII na piksel mapowane na wpisy kolorów |
| Specyfikacja kolorów | Nazwy kolorów X11 (np. cornflowerblue) lub wartości szesnastkowe #RRGGBB dla każdego wpisu palety |
| Przezroczystość | Nazwa koloru X11 „None” mapuje kod piksela na pełną przezroczystość (brak oddzielnego bajtu kanału alfa) |
| Kompresja | Brak - każdy piksel przechowywany jako 1-4 dosłowne znaki ASCII |
| Wersje formatu | XPM1 (1989, makra C monochromatyczne), XPM2 (1990, samodzielne dane), XPM3 (1991, składnia C - obecna) |
| Maksymalna paleta | Do 65 536 jednoczesnych kolorów indeksowanych |
| Typ MIME | image/x-xpixmap |
| Wymiary | Brak twardego limitu; rozmiar pliku rośnie liniowo wraz z liczbą pikseli (każdy piksel = chars_per_pixel bajtów ASCII) |
| Integracja z C | Zawartość pliku może być bezpośrednio dołączona (#include) do kodu źródłowego C/C++ i skompilowana bez loadera |
| Wydano | 1989 (XPM1, Daniel Dardailler, Bull Research Center) |
| Najnowsza wersja | XPM3 (1991), documented in XPM Manual v3.4i (September 1996, Arnaud Le Hors) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.xfree86.org |
Konwersje XPM
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki XPM.