Portable Pixmap Format (.ppm)
Netpbm StandaardPortable Pixmap Format (PPM) is de RGB-standaard voor volledige kleur binnen de Netpbm-familie en biedt de eenvoudigst mogelijke niet-gecomprimeerde weergave van digitale truecolorafbeeldingen.
Inspecteren en metadata
Besturingssystemen en bestandsanalysators herkennen PPM-bestanden aan de hand van de eerste binaire bytesequentie:
Bestandshandtekening op byteniveau (magic bytes)
Besturingssystemen en bestandsanalysators herkennen PPM-bestanden aan de hand van de eerste binaire bytesequentie:
HEX-HANDTEKENING (OFFSET 0):
50 33 / 50 36ASCII-WEERGAVE: P3 / P6
Standaardisatie: Netpbm Library Standard
Technische specificaties
| Containerarchitectuur | ASCII (P3) of binair (P6) Netpbm-formaat met breedte, hoogte, maximale kleurwaarde en RGB-tripletstroom |
| Compressie | Niet-gecomprimeerde ruwe binaire bytes of door mensen leesbare ASCII-teksttriplets |
| Bytevolgorde (endianness) | Big-Endian (voor 48-bits samples met 16 bits per kanaal in P6-modus) |
| Kleurruimten | Lineair RGB of standaard sRGB |
| Kanalen en structuur | 3 RGB-kanalen (24-bits of 48-bits truecolor) |
| Maximale afmetingen | Praktisch onbeperkt (ondersteunt een willekeurige 64-bits coördinatenruimte) |
| Transparantie | Geen (standaard PPM is strikt ondoorzichtig RGB) |
| Streaming en progressief | Sequentiële streaming, rij voor rij |
Technische vergelijkingsmatrix: PPM versus concurrenten
| Technisch kenmerk | PPM (Huidig) | BMP | PNG | TIFF |
|---|---|---|---|---|
| Kleurdiepte | 24-bits / 48-bits RGB Truecolor | 1-bits tot 32-bits RGBA | 24-bits / 48-bits RGBA | 8-bits tot 64-bits RGBA |
| Netpbm-tegenhanger | PPM (Portable Pixmap) | Niet-Netpbm-formaat | W3C-formaat buiten Netpbm | Adobe-formaat buiten Netpbm |
| Bestandshandtekening (magic bytes) | P3 (ASCII) / P6 (binair) | BM (0x42 0x4D) | ‰PNG.... | II*\0 of MM\0* |
| Compressie | Niet-gecomprimeerd | Niet-gecomprimeerd / RLE | Verliesvrije Deflate-compressie; de besparing op bestandsgrootte varieert met de inhoud van de afbeelding | LZW / Deflate / Zip |
Veelvoorkomende beschadigingen en gids voor hex-herstel
Afbeelding wordt weergegeven met diagonale verschuiving van het kleurkanaal.
Oorzaak: Afgeknotte byte in RGB-drietalstroom waardoor volgende rode, groene en blauwe bytes verkeerd uitgelijnd raken.
Herstel: Pas de uitlijning van de RGB-drietaloffsets aan of converteer met de Netpbm Converter van File2File.app.
Beveiligingsanalyse en aanvalsvectoren voor parsers
PPM-decoders moeten integeroverflow voorkomen bij het berekenen van de buffergroottes voor RGB-drietallen van 3 bytes.
Bekende aanvalsvectoren
- Integeroverflow tijdens de toewijzing van een buffer voor breedte * hoogte * 3.
- Bufferoverread bij het lezen van misvormde ASCII-tokens in P3-modus.
- Denial of service door buitensporige geheugentoewijzingsdeclaraties.
Aanbevolen beveiligingspraktijken: Handhaaf strikte limieten voor geheugentoewijzing op basis van de fysieke bestandsgrootte vóór decodering.
Historische oorsprong en mijlpalen
Belangrijkste voordelen
- De header en pixelwaarden van PPM zijn eenvoudig vanuit een grafisch programma te schrijven. Gebruik een bibliotheek als u zowel ASCII- als binaire varianten wilt ontleden of misvormde bestanden veilig wilt verwerken.
- ASCII-modus (P3) stelt programmeurs in staat om ruwe RGB-kleurwaarden direct in een teksteditor te bekijken, te kopiëren en te bewerken.
- PPM wordt in sommige computergrafische cursussen en voorbeelden van raytracers gebruikt als eenvoudig tussen- of uitvoerformaat.
Technische beperkingen
- Niet-gecomprimeerde 8-bits P6-afbeeldingen kunnen groot zijn; een RGB-afbeelding van 3840 x 2160 gebruikt ongeveer 24,9 miljoen bytes aan pixelgegevens, exclusief de header.
- Inefficiënt voor distributie via het web of netwerkoverdracht.
- Geen ondersteuning voor alfatransparantie of ingesloten kleurprofielen.
Interessante technische weetjes
- Sommige inleidende voorbeelden van raytracers gebruiken PPM voor de uitvoer omdat de pixelgegevens eenvoudig te schrijven zijn.
- In ASCII PPM ('P3') is een afbeelding letterlijk een tekstbestand met getallen: '255 0 0' voor rood, '0 255 0' voor groen, '0 0 255' voor blauw.
- De Netpbm-suite werd oorspronkelijk verspreid op de 4.3BSD Unix Tape-releases eind jaren tachtig.
Veelgestelde technische vragen
Waarom gebruiken informaticacursussen PPM?
PPM slaat RGB-pixelwaarden op met een korte header, zodat een raytracer een afbeelding kan schrijven zonder complexe codec. Toepassingen moeten nog steeds overweg kunnen met de P3-tekstvariant, de P6-binaire variant en de bijbehorende regels voor de bitdiepte van de waarden.
Wat is het verschil tussen P3- en P6-PPM?
P3 slaat RGB-drietallen op als gewone ASCII-tekstgetallen, terwijl P6 RGB-drietallen opslaat als onbewerkte binaire bytes.
Hoe kan ik een PPM-bestand converteren naar JPG of PNG?
U kunt PPM-bestanden rechtstreeks in uw browser met File2File.app converteren naar PNG of JPG, zonder dat er gegevens van uw apparaat worden verzonden.