Portable Pixmap format (.ppm)
Standard StandardPortable Pixmap Format (PPM) predstavlja standard u punom RGB koloru Netpbm grafičke porodice, obezbeđujući najjednostavniju moguću nekomprimovanu reprezentaciju Truecolor digitalnih slika.
Pregled i metapodaci
Operativni sistemi i analizatori datoteka identifikuju PPM datoteke proverom početnog binarnog niza bajtova:
Potpis zaglavlja na nivou bajtova (magični bajtovi)
Operativni sistemi i analizatori datoteka identifikuju PPM datoteke proverom početnog binarnog niza bajtova:
HEKSADECIMALNI POTPIS (OFFSET 0):
50 33 / 50 36ASCII REPREZENTACIJA: P3 / P6
Standardizacija: Standard biblioteke Netpbm
Tehničke specifikacije
| Arhitektura kontejnera | ASCII (P3) ili binarni (P6) Netpbm format sa širinom, visinom, maksimalnom vrednošću boje i nizom RGB trojki |
| Kompresija | Nekomprimovani sirovi binarni bajtovi ili čitljive ASCII trojke brojeva |
| Bajtni redosled (Endianness) | Redosled bajtova od najznačajnijeg ka najmanje značajnom (za 48-bitne uzorke sa 16 bita po kanalu u režimu P6) |
| Prostori boja | Linearni RGB ili standardni sRGB |
| Kanali i struktura | 3 kanala RGB (24-bitna ili 48-bitna prava boja) |
| Maksimalne dimenzije | Praktično neograničene (podržavaju proizvoljan koordinatni prostor od 64 bita) |
| Transparentnost | Nema (standardni PPM podržava samo neprozirni RGB) |
| Strimovanje i progresivno učitavanje | Sekvencijalni prikaz u strimu, red po red |
Tehnička matrica poređenja: PPM u odnosu na konkurente
| Tehnički atribut | PPM (Trenutno) | BMP | PNG | TIFF |
|---|---|---|---|---|
| Dubina boja | 24-bitni / 48-bitni RGB Truecolor | 1-bitni do 32-bitni RGBA | 24-bitni / 48-bitni RGBA | 8-bitni do 64-bitni RGBA |
| Netpbm srodnik | PPM (Portable Pixmap) | Format van Netpbm-a | W3C format van Netpbm-a | Adobe format van Netpbm-a |
| Magični bajtovi | P3 (ASCII) / P6 (binarno) | BM (0x42 0x4D) | ‰PNG.... | II*\0 ili MM\0* |
| Kompresija | Nekomprimovano | Nekomprimovano / RLE | Nekomprimovano Deflate kompresovanje; ušteda prostora zavisi od sadržaja slike | LZW / Deflate / Zip |
Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak
Slika se iscrtava sa dijagonalnim pomeranjem kanala boja.
Osnovni uzrok: Skraćeni bajt u RGB trojnom nizu koji uzrokuje da naredni crveni, zeleni i plavi bajtovi izgube poravnanje.
Oporavak: Ponovo poravnajte ofsete RGB trojki ili izvršite konverziju pomoću File2File.app Netpbm konvertera.
Bezbednosna analiza i vektori napada parsera
PPM dekoderi moraju da se štite od prekoračenja celobrojne vrednosti (integer overflow) prilikom izračunavanja veličine bafera za RGB trojke od 3 bajta.
Poznati vektori napada
- Prekoračenje celobrojne vrednosti tokom alokacije bafera širina * visina * 3.
- Prekoračenje opsega bafera pri čitanju nepravilnih ASCII tokena u P3 režimu.
- Uskraćivanje usluge (DoS) prekomernim deklaracijama za alokaciju memorije.
Najbolje prakse za zaštitu: Nametnite stroga ograničenja alokacije memorije na osnovu fizičke veličine datoteke pre dekodiranja.
Istorijat i prekretnice
Ključne prednosti
- Zaglavlje i uzorke piksela u PPM-u jednostavno je zapisati iz grafičkog programa. Biblioteka je korisna kada treba parsirati ASCII i binarne varijante ili bezbedno obraditi neispravne datoteke.
- ASCII režim (P3) omogućava programerima da direktno pregledaju, kopiraju i uređuju sirove RGB vrednosti boja u uređivaču teksta.
- PPM se koristi kao jednostavan posredni ili izlazni format u nekim kursevima računarske grafike i primerima programa za praćenje zraka.
Tehnička ograničenja i nedostaci
- Nekomprimovane 8-bitne P6 slike mogu biti velike; RGB slika dimenzija 3840 x 2160 sadrži oko 24,9 miliona bajtova podataka piksela, bez zaglavlja.
- Neefikasno za distribuciju na vebu ili mrežni prenos.
- Nema podršku za alfa providnost ili ugrađene profile boja.
Zanimljivosti
- Neki uvodni primeri programa za praćenje zraka koriste PPM kao izlazni format jer je jednostavno zapisati podatke o pikselima.
- U ASCII PPM-u ('P3'), slika je doslovno tekstualna datoteka sa brojevima: '255 0 0' za crvenu, '0 255 0' za zelenu, '0 0 255' za plavu.
- Netpbm paket je originalno distribuiran na 4.3BSD Unix trakama krajem osamdesetih godina prošlog veka.
Često postavljana tehnička pitanja
Zašto kursevi računarstva koriste PPM?
PPM čuva uzorke RGB piksela uz kratko zaglavlje, pa program za praćenje zraka može da upiše sliku bez složenog kodeka. Aplikacije ipak moraju da obrade tekstualnu varijantu P3 i binarnu varijantu P6, kao i pravila za dubinu uzoraka.
Koja je razlika između P3 i P6 PPM-a?
P3 čuva RGB trojke kao obične ASCII tekstualne brojeve, dok P6 čuva RGB trojke kao sirove binarne bajtove.
Kako mogu da konvertujem PPM datoteku u JPG ili PNG?
Možete da konvertujete PPM datoteke u PNG ili JPG direktno u pretraživaču koristeći File2File.app, pri čemu nijedan podatak ne napušta vaš uređaj.