Co to jest format pliku PNM?
.pnm (Portable Anymap) to rozszerzenie zbiorcze obejmujące trzy powiązane, nieskompresowane podformaty obrazów rastrowych z rodziny Netpbm: PBM (Portable Bitmap, 1-bitowy czarno-biały), PGM (Portable Graymap, skala szarości) oraz PPM (Portable Pixmap, kolor). Rzeczywisty podtyp dowolnego pliku .pnm jest identyfikowany przez jego pierwsze dwa bajty: P1-P3 dla wariantów ASCII („tekstowych”) oraz P4-P6 dla wariantów binarnych („surowych”).
Jef Poskanzer stworzył oryginalny format PBM w 1988 roku jako część swojego zestawu narzędzi Pbmplus, dodając PGM i PPM krótko po nim. Formaty te zostały zaprojektowane jako najprostsza możliwa bezstratna reprezentacja obrazu, zdolna do przetrwania przesyłu przez 7-bitowe łącza e-mail. Warianty ASCII przechowują wartości pikseli jako liczby całkowite oddzielone spacjami po nagłówku tekstowym; warianty binarne pakują surowe bajty bezpośrednio po nagłówku w celu bardziej kompaktowego przechowywania.
Głębia koloru waha się od 1 bpp (PBM) do 16 bpp na kanał (PGM/PPM z 16-bitową wartością maksymalną), co daje do 48 bpp dla obrazów kolorowych. Format nie definiuje kompresji, szyfrowania, profili kolorów, danych EXIF ani miniatur - jest celowo minimalistyczny.
PNG jest nowoczesnym zamiennikiem dla bezstratnego przechowywania, ale pliki .pnm pozostają wszechobecnym formatem pośrednim w potokach przetwarzania obrazu w systemach Unix. ImageMagick, GIMP, FFmpeg i praktycznie wszystkie narzędzia graficzne Unix obsługują ten format natywnie.
Bezpieczeństwo
RYZYKO: LOWPNM/PBM/PGM/PPM należą do najprostszych formatów obrazów - nagłówek tekstowy plus surowe dane pikseli (lub wartości ASCII). Brak wykonywania kodu, brak skryptów, brak podatności związanych z kompresją. Bardzo bezpieczne do otwierania. Głównym ryzykiem jest duży rozmiar nieskompresowanego pliku dla obrazów o wysokiej rozdzielczości.
Szczegóły formatu
w pigułceProgramy otwierające pliki PNM
Szczegóły techniczne
specyfikacja| Podformaty | Nazwa zbiorcza dla PBM (P1/P4, 1-bit), PGM (P2/P5, skala szarości) i PPM (P3/P6, kolor) |
| Magic bytes | Pierwsze 2 bajty: `P` (0x50) + cyfra `1`-`6` (0x31-0x36) - identyfikuje podtyp oraz kodowanie ASCII vs. binarne |
| Warianty ASCII (P1-P3) | Wartości pikseli przechowywane jako liczby całkowite oddzielone spacjami - czytelne dla człowieka i bezpieczne dla systemów 7-bitowych |
| Warianty binarne (P4-P6) | Surowe bajty pikseli pakowane bezpośrednio po nagłówku ASCII - bardziej kompaktowe, te same dane logiczne |
| Kompresja | Brak - dane pikseli przechowywane bez kompresji we wszystkich wariantach |
| Głębia koloru | 1 bpp (PBM); 8 lub 16 bpp na kanał w skali szarości (PGM); 24 lub 48 bpp w kolorze (PPM z 16-bitową wartością maksymalną) |
| Struktura nagłówka | Pola ASCII: magic number, opcjonalne linie komentarza `#`, szerokość, wysokość, a następnie maxval (brak w P1/P4 1-bit) |
| Kolejność bajtów | Big-endian dla próbek 16-bitowych w binarnych wariantach P5/P6; nie dotyczy formatów 8-bitowych ani ASCII |
| Ograniczenie maxval | Musi wynosić 1-65 535 (uint16); wartości ≤ 255 używają 1 bajta na próbkę w trybach binarnych P4-P6 |
| Wymiary | Brak zdefiniowanego maksimum; w praktyce ograniczone przez dostępną pamięć systemową |
| Typ MIME | `image/x-portable-anymap`; podtypy: `image/x-portable-bitmap`, `image/x-portable-graymap`, `image/x-portable-pixmap` |
| Rozszerzenie PAM | P7 (`.pam`, Portable Arbitrary Map) rozszerza PNM o dowolną liczbę kanałów i głębię bitową |
| Typowe zastosowanie | Format pośredni w potokach przetwarzania obrazu Unix; natywne I/O dla ImageMagick, GIMP, FFmpeg i większości narzędzi Unix |
| Wydano | 1988 (Jef Poskanzer's Pbmplus toolkit; PBM first, PGM and PPM by year-end) |
| Najnowsza wersja | Netpbm 11.x (2020s); format spec stable since early 1990s |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | netpbm.sourceforge.net |
Konwersje PNM
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki PNM.