Wat is het PNM-bestandsformaat?
.pnm (Portable Anymap) is een overkoepelende extensie voor drie gerelateerde ongecomprimeerde rasterafbeelding-subformaten uit de Netpbm-familie: PBM (Portable Bitmap, 1-bit zwart-wit), PGM (Portable Graymap, grijswaarden) en PPM (Portable Pixmap, kleur). Het werkelijke subtype van een .pnm-bestand wordt geïdentificeerd door de eerste twee bytes: P1-P3 voor de ASCII („plain”) varianten en P4-P6 voor de binaire („raw”) varianten.
Jef Poskanzer creëerde het originele PBM-formaat in 1988 als onderdeel van zijn Pbmplus-toolkit, en voegde kort daarna PGM en PPM toe. De formaten zijn ontworpen als de eenvoudigst mogelijke lossless afbeeldingsweergave, geschikt om transport via 7-bit e-mailverbindingen te overleven. De ASCII-varianten slaan pixelwaarden op als door witruimte gescheiden decimale gehele getallen na een header in platte tekst; de binaire varianten verpakken ruwe bytes direct na de header voor een compactere opslag.
De kleurdiepte varieert van 1 bpp (PBM) tot 16 bpp per kanaal (PGM/PPM met 16-bit maxval), wat resulteert in maximaal 48 bpp voor kleurafbeeldingen. Het formaat definieert geen compressie, versleuteling, kleurprofiel, EXIF-data of miniaturen - het is bewust minimaal.
PNG is de moderne vervanger voor lossless opslag, maar .pnm-bestanden blijven een alomtegenwoordig tussenformaat in Unix-pijplijnen voor beeldbewerking. ImageMagick, GIMP, FFmpeg en vrijwel alle Unix-beeldtools lezen en schrijven het formaat standaard.
Beveiliging & veiligheid
RISICO: LOWPNM/PBM/PGM/PPM behoren tot de eenvoudigste afbeeldingsformaten - header in platte tekst plus ruwe pixelgegevens (of ASCII-waarden). Geen code-uitvoering, geen scripting, geen compressie-exploits. Zeer veilig om te openen. Het belangrijkste risico is de triviaal grote ongecomprimeerde bestandsgrootte voor afbeeldingen met een hoge resolutie.
Formaatdetails
in een notendopProgramma's die PNM-bestanden openen
Technische details
diepe specificaties| Subformaten | Overkoepelend voor PBM (P1/P4, 1-bit), PGM (P2/P5, grijswaarden) en PPM (P3/P6, kleur) |
| Magic bytes | Eerste 2 bytes: `P` (0x50) + cijfer `1`-`6` (0x31-0x36) - identificeert subtype en ASCII vs. binaire codering |
| ASCII-varianten (P1-P3) | Pixelwaarden opgeslagen als door witruimte gescheiden decimale gehele getallen - menselijk leesbaar en 7-bit veilig |
| Binaire varianten (P4-P6) | Ruwe pixelbytes direct verpakt na de ASCII-header - compacter, zelfde logische gegevens |
| Compressie | Geen - pixelgegevens ongecomprimeerd opgeslagen in alle varianten |
| Kleurdiepte | 1 bpp (PBM); 8 of 16 bpp per kanaal grijswaarden (PGM); 24 of 48 bpp kleur (PPM met 16-bit maxval) |
| Headerstructuur | ASCII-velden: magisch getal, optionele `#` commentaarregels, breedte, hoogte, dan maxval (afwezig voor P1/P4 1-bit) |
| Bytevolgorde | Big-endian voor 16-bit samples in binaire P5/P6 varianten; niet van toepassing op 8-bit of ASCII-formaten |
| Maxval beperking | Moet 1-65.535 (uint16) zijn; waarden ≤ 255 gebruiken 1 byte per sample in binaire P4-P6 modi |
| Dimensies | Geen gedefinieerd maximum; in de praktijk beperkt door beschikbaar systeemgeheugen |
| MIME-type | `image/x-portable-anymap`; subtypes: `image/x-portable-bitmap`, `image/x-portable-graymap`, `image/x-portable-pixmap` |
| PAM-extensie | P7 (`.pam`, Portable Arbitrary Map) breidt PNM uit naar willekeurige aantallen kanalen en bitdieptes |
| Typisch gebruik | Tussenformaat voor Unix-beeldverwerkingspijplijnen; standaard I/O voor ImageMagick, GIMP, FFmpeg en de meeste Unix-beeldtools |
| Uitgebracht | 1988 (Jef Poskanzer's Pbmplus toolkit; PBM first, PGM and PPM by year-end) |
| Laatste versie | Netpbm 11.x (2020s); format spec stable since early 1990s |
| Open standaard | Ja · royaltyvrij |
| Specificatie | netpbm.sourceforge.net |
PNM conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over PNM-bestanden.