Portable Pixmap Format (.ppm)

Netpbm Standaard

Portable 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:

Selecteer of sleep bestanden hierheen

Privé - bestanden verlaten uw apparaat niet

of plak Ctrl+V
Privacygarantie zonder netwerktransmissie: 0 bytes geüpload naar externe servers. Alle verwerking vond lokaal plaats in uw browser-sandbox.

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 36

ASCII-WEERGAVE: P3 / P6

Standaardisatie: Netpbm Library Standard

Technische specificaties

ContainerarchitectuurASCII (P3) of binair (P6) Netpbm-formaat met breedte, hoogte, maximale kleurwaarde en RGB-tripletstroom
CompressieNiet-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)
KleurruimtenLineair RGB of standaard sRGB
Kanalen en structuur3 RGB-kanalen (24-bits of 48-bits truecolor)
Maximale afmetingenPraktisch onbeperkt (ondersteunt een willekeurige 64-bits coördinatenruimte)
TransparantieGeen (standaard PPM is strikt ondoorzichtig RGB)
Streaming en progressiefSequentiële streaming, rij voor rij

Technische vergelijkingsmatrix: PPM versus concurrenten

Technisch kenmerkPPM (Huidig)BMPPNGTIFF
Kleurdiepte24-bits / 48-bits RGB Truecolor1-bits tot 32-bits RGBA24-bits / 48-bits RGBA8-bits tot 64-bits RGBA
Netpbm-tegenhangerPPM (Portable Pixmap)Niet-Netpbm-formaatW3C-formaat buiten NetpbmAdobe-formaat buiten Netpbm
Bestandshandtekening (magic bytes)P3 (ASCII) / P6 (binair)BM (0x42 0x4D)‰PNG....II*\0 of MM\0*
CompressieNiet-gecomprimeerdNiet-gecomprimeerd / RLEVerliesvrije Deflate-compressie; de besparing op bestandsgrootte varieert met de inhoud van de afbeeldingLZW / 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

200048-bits kleurdiepte (16 bits per kanaal) toegevoegd aan de Netpbm P6-specificatie.
1993Wordt een tussenformaat dat door sommige Unix-tools voor grafische conversie in de Netpbm-toolkit wordt gebruikt.
1989Jef Poskanzer voltooit het Netpbm-triumviraat (PBM, PGM, PPM) met het PPM-formaat voor volledige kleur.

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.