Portable Pixmap (.ppm)
Netpbm StandardPortable Pixmap Format (PPM) är fullfärgs-RGB-standarden för Netpbm-grafikfamiljen, och erbjuder den enklaste möjliga okomprimerade representationen av Truecolor-digitalbilder.
Granska och metadata
Operativsystem och filanalysverktyg identifierar PPM-filer genom att granska den inledande sekvensen av binära byte:
Signatur i filhuvudet på bytenivå (magiska byte)
Operativsystem och filanalysverktyg identifierar PPM-filer genom att granska den inledande sekvensen av binära byte:
HEX-SIGNATUR (OFFSET 0):
50 33 / 50 36ASCII-REPRESENTATION: P3 / P6
Standardisering: Netpbm Library Standard
Tekniska specifikationer
| Containerarkitektur | Netpbm-format i ASCII (P3) eller binärt (P6), med bredd, höjd, maximalt färgvärde och RGB-trippelström |
| Komprimering | Okomprimerade råa binära byte eller människoläsbara ASCII-tripplar |
| Byteordning | Big-endian (för 16-bitars sampel per kanal i 48-bitars P6-läge) |
| Färgrymder | Linjär RGB eller standardiserad sRGB |
| Kanaler och struktur | 3 RGB-kanaler (24- eller 48-bitars Truecolor) |
| Maximala dimensioner | I praktiken obegränsat (stöder godtyckliga koordinatvärden på 64 bitar) |
| Transparens | Ingen (standard-PPM är helt ogenomskinligt RGB) |
| Strömning och progressiv visning | Sekventiell strömmande uppspelning rad för rad |
Teknisk jämförelsematris: PPM jämfört med konkurrenter
| Tekniskt attribut | PPM (Aktuell) | BMP | PNG | TIFF |
|---|---|---|---|---|
| Färgdjup | 24-bitars / 48-bitars RGB Truecolor | 1-bitars till 32-bitars RGBA | 24-bitars / 48-bitars RGBA | 8-bitars till 64-bitars RGBA |
| Besläktat Netpbm-format | PPM (Portable Pixmap) | Icke-Netpbm-format | Icke-Netpbm W3C-format | Icke-Netpbm Adobe-format |
| Signaturbyte | P3 (ASCII) / P6 (Binär) | BM (0x42 0x4D) | ‰PNG.... | II*\0 eller MM\0* |
| Komprimering | Okomprimerad | Okomprimerad / RLE | Förlustfri Deflate-komprimering; filstorleksbesparingen varierar med bildinnehållet | LZW / Deflate / Zip |
Vanliga skadeorsaker och hex-återställningsguide
Bilden renderas med diagonal skjuvning av färgkanalerna.
Grundorsak: Avhuggen byte i RGB-trippelströmmen som gör att efterföljande röda, gröna och blå byte hamnar i fel fas.
Återställning: Återställ fasförskjutningen för RGB-tripplar eller konvertera med File2File.app Netpbm Converter.
Säkerhetsanalys och attackvektorer för tolkar
PPM-avkodare måste skydda mot heltalsspill vid beräkning av buffertstorlekar för RGB-tripplar på 3 byte.
Kända attackvektorer
- Heltalsspill vid allokering av buffert för bredd * höjd * 3.
- Buffertläsning utanför gränserna vid inläsning av felaktiga ASCII-tokens i P3-läge.
- Tjänsteavbrott (DoS) genom begäran om orimligt stora minnesallokeringar.
Rekommenderade skyddsåtgärder: Tillämpa strikta minnesallokeringsgränser baserade på fysisk filstorlek före avkodning.
Historiskt ursprung och milstolpar
Viktiga fördelar
- PPM:s rubrik och pixelvärden är enkla att skriva från ett grafikprogram. Använd ett bibliotek om du behöver tolka både ASCII- och binärvarianter eller hantera felaktiga filer säkert.
- ASCII-läge (P3) gör det möjligt för programmerare att visa, kopiera och redigera råa RGB-färgvärden direkt i en textredigerare.
- PPM används som ett enkelt mellan- eller utdataformat i vissa kurser i datorgrafik och exempel på strålspårare.
Tekniska begränsningar
- Okomprimerade P6-bilder med 8 bitar kan bli stora; en RGB-bild på 3840 × 2160 pixlar använder cirka 24,9 miljoner byte pixeldata, före huvudet.
- Ineffektivt för webbdistribution eller nätverksöverföring.
- Inget stöd för alfatransparens eller inbäddade färgprofiler.
Intressant teknisk kuriosa
- Vissa introducerande exempel på strålspårare använder PPM som utdata eftersom pixeldata är enkel att skriva.
- I ASCII PPM ('P3') är en bild bokstavligen en textfil med siffror: '255 0 0' för rött, '0 255 0' för grönt, '0 0 255' för blått.
- Netpbm-sviten distribuerades ursprungligen på 4.3BSD Unix Tape-utgåvorna i slutet av 1980-talet.
Vanliga tekniska frågor
Varför använder datavetenskapskurser PPM?
PPM lagrar RGB-pixelvärden med en kort rubrik, så en strålspårare kan skriva en bild utan en komplicerad kodek. Program behöver ändå hantera både textvarianterna P3 och binärvarianterna P6 samt reglerna för samplingsdjup.
Vad är skillnaden mellan PPM-formaten P3 och P6?
P3 lagrar RGB-tripplar som vanliga ASCII-textnummer, medan P6 lagrar RGB-tripplar som råa binära byte.
Hur kan jag konvertera en PPM-fil till JPG eller PNG?
Du kan konvertera PPM-filer till PNG eller JPG direkt i din webbläsare med hjälp av File2File.app utan att någon data lämnar din enhet.