Portable Pixmap (.ppm)
Netpbm-bibliotekets StandardPortable Pixmap Format (PPM) er fullfarge-RGB-standarden i Netpbm-grafikkfamilien og gir den enklest mulige ukomprimerte representasjonen av digitalbilder med ekte farger.
Inspeksjon og metadata
Operativsystemer og filanalysatorer identifiserer PPM-filer ved å undersøke den innledende binære bytesekvensen:
Filsignatur på bytenivå (magiske byte)
Operativsystemer og filanalysatorer identifiserer PPM-filer ved å undersøke den innledende binære bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
50 33 / 50 36ASCII-REPRESENTASJON: P3 / P6
Standardisering: Netpbm-bibliotekets standard
Tekniske spesifikasjoner
| Beholderarkitektur | Netpbm-format i ASCII (P3) eller binær form (P6), med bredde, høyde, maksimal fargeverdi og RGB-triplettstrøm |
| Komprimering | Ukomprimerte rå byteverdier eller tripler med lesbare ASCII-tall |
| Bytterekkefølge | Big-endian (for 16-bits verdier per kanal, 48 bit, i P6-modus) |
| Fargerom | Lineær RGB eller standard sRGB |
| Kanaler og struktur | 3 RGB-kanaler (24- eller 48-bits ekte farger) |
| Maks. dimensjoner | I praksis ubegrenset (støtter vilkårlig 64-bits koordinatrom) |
| Gjennomsiktighet | Ingen (standard PPM er utelukkende ugjennomsiktig RGB) |
| Strømming og progressiv visning | Støtter sekvensiell strømming rad for rad |
Teknisk sammenligningsmatrise: PPM sammenlignet med konkurrenter
| Teknisk attributt | PPM (Gjeldende) | BMP | PNG | TIFF |
|---|---|---|---|---|
| Fargedybde | 24-bit / 48-bit RGB Truecolor | 1-bit til 32-bit RGBA | 24-bit / 48-bit RGBA | 8-bit til 64-bit RGBA |
| Beslektet Netpbm-format | PPM (Portable Pixmap) | Ikke-Netpbm-format | Ikke-Netpbm W3C-format | Ikke-Netpbm Adobe-format |
| Signaturbyte | P3 (ASCII) / P6 (Binær) | BM (0x42 0x4D) | ‰PNG.... | II*\0 eller MM\0* |
| Komprimering | Ukomprimert | Ukomprimert / RLE | Tapsfri Deflate-komprimering; plassbesparelsen varierer med bildeinnholdet | LZW / Deflate / Zip |
Vanlige korrupsjonsmoduser og heksadesimal gjenopprettingsveiledning
Bildet gjengis med diagonal fargekanalforskyvning.
Underliggende årsak: Avskåret byte i RGB-trippelstrømmen fører til at de påfølgende røde, grønne og blå bytene forskyves.
Utbedring: Juster RGB-trippel-forskyvningene på nytt eller konverter ved hjelp av File2File.app Netpbm Converter.
Sikkerhetsanalyse og angrepsvektorer mot parsere
PPM-dekodere må beskytte seg mot heltallsoverflyt ved beregning av bufferstørrelser for 3-bytes RGB-tripler.
Kjente angrepsvektorer
- Heltallsoverflyt under bufferallokering for bredde * høyde * 3.
- Lesing utenfor buffergrensene ved lesing av feilformaterte ASCII-tokener i P3-modus.
- Tjenestenekt gjennom overdrevne minneallokeringserklæringer.
Anbefalte sikkerhetstiltak: Håndhev strenge grenser for minneallokering basert på den fysiske filstørrelsen før dekoding.
Historisk opprinnelse og milepæler
Viktige fordeler
- PPM-headeren og pikselverdiene er enkle å skrive ut fra et grafikkprogram. Bruk et bibliotek hvis du må tolke både ASCII- og binærvarianter eller håndtere feilformaterte filer på en sikker måte.
- ASCII-modus (P3) lar programmerere vise, kopiere og redigere rå RGB-fargeverdier direkte i et tekstredigeringsprogram.
- PPM brukes som et enkelt mellom- eller utdataformat i enkelte kurs i datagrafikk og eksempler på strålesporere.
Tekniske begrensninger og ulemper
- Ukomprimerte 8-bits P6-bilder kan bli store; et 3840 x 2160 RGB-bilde bruker rundt 24,9 millioner byte til pikseldata, før headeren.
- Ineffektivt for nettdistribusjon eller nettverksoverføring.
- Ingen støtte for alfagjennomsiktighet eller innebygde fargeprofiler.
Interessante tekniske fakta
- Noen innføringseksempler på strålesporere bruker PPM som utdataformat fordi pikseldataene er enkle å skrive.
- I ASCII PPM ('P3') er et bilde bokstavelig talt en tekstfil med tall: '255 0 0' for rød, '0 255 0' for grønn, '0 0 255' for blå.
- Netpbm-pakken ble opprinnelig distribuert på 4.3BSD Unix Tape-utgivelsene på slutten av 1980-tallet.
Ofte stilte tekniske spørsmål
Hvorfor bruker datavitenskapskurs PPM?
PPM lagrer RGB-pikselverdier med en kort header, slik at en strålesporer kan skrive et bilde uten en komplisert kodek. Programmer må likevel håndtere både P3- og P6-variantene og reglene for bitdybde.
Hva er forskjellen mellom P3 og P6 PPM?
P3 lagrer RGB-tripletter som rene ASCII-tall, mens P6 lagrer RGB-tripletter som rå binære byte.
Hvordan kan jeg konvertere en PPM-fil til JPG eller PNG?
Du kan konvertere PPM-filer til PNG eller JPG direkte i nettleseren din ved hjelp av File2File.app uten at noen data forlater enheten din.