Przenośna mapa pikseli (.ppm)
Netpbm StandardníPortable Pixmap Format (PPM) je plnobarevný RGB standard rodiny grafických formátů Netpbm, který poskytuje nejjednodušší možnou nekomprimovanou reprezentaci plnobarevných digitálních obrázků.
Kontrola a metadata
Operační systémy a analyzátory souborů identifikují soubory PPM kontrolou počáteční binární sekvence bajtů:
Podpis hlavičky na úrovni bajtů (Magic Bytes)
Operační systémy a analyzátory souborů identifikují soubory PPM kontrolou počáteční binární sekvence bajtů:
HEXADECIMÁLNÍ PODPIS (POSUN 0):
50 33 / 50 36ASCII REPREZENTACE: P3 / P6
Standardizace: Netpbm Library Standard
Technické specifikace
| Architektura kontejneru | Formát Netpbm v ASCII (P3) nebo binární podobě (P6) s šířkou, výškou, maximální hodnotou barvy a proudem trojic RGB |
| Komprese | Nekomprimované surové binární bajty nebo trojice čísel v textu ASCII čitelném pro člověka |
| Pořadí bajtů | Big-endian (u 48bitových vzorků se 16 bity na kanál v režimu P6) |
| Barevné prostory | Lineární RGB nebo standardní sRGB |
| Kanály a struktura | 3 kanály RGB (24bitové nebo 48bitové plnobarevné RGB) |
| Max. rozměry | Prakticky neomezené (podpora libovolného 64bitového rozsahu souřadnic) |
| Průhlednost | Žádná (standardní PPM obsahuje pouze neprůhledné RGB) |
| Streamování a progresivní načítání | Sekvenční streamování po jednotlivých řádcích |
Technická srovnávací matice: PPM vs konkurence
| Technický atribut | PPM (Aktuální) | BMP | PNG | TIFF |
|---|---|---|---|---|
| Barevná hloubka | 24bitové / 48bitové plnobarevné RGB | RGBA od 1 do 32 bitů | 24bitový / 48bitový RGBA | 8bitový až 64bitový RGBA |
| Příbuzný v Netpbm | PPM (Portable Pixmap) | Formát mimo Netpbm | Formát W3C mimo Netpbm | Formát Adobe mimo Netpbm |
| Magické bajty | P3 (ASCII) / P6 (Binární) | BM (0x42 0x4D) | ‰PNG.... | II*\0 nebo MM\0* |
| Komprese | Nekomprimováno | Nekomprimováno / RLE | Bezztrátová komprese Deflate; úspora místa závisí na obsahu obrázku | LZW / Deflate / Zip |
Běžné režimy poškození a příručka pro obnovení v hex
Obrázek se vykresluje s diagonálním zkosením barevných kanálů.
Hlavní příčina: Oříznutý bajt v proudu trojic RGB způsobí posun následujících červených, zelených a modrých bajtů.
Obnovení: Znovu zarovnejte posuny RGB trojic nebo proveďte konverzi pomocí nástroje File2File.app Netpbm Converter.
Bezpečnostní analýza a vektory útoků na parser
Dekodéry PPM se musí chránit před přetečením celého čísla při výpočtu velikostí vyrovnávací paměti pro 3bajtové RGB trojice.
Známé vektory útoků
- Přetečení celého čísla během alokace vyrovnávací paměti šířka * výška * 3.
- Čtení za hranicemi vyrovnávací paměti při čtení chybně formátovaných tokenů ASCII v režimu P3.
- Odepření služby (DoS) prostřednictvím nadměrných deklarací alokace paměti.
Doporučené bezpečnostní postupy: Před dekódováním přísně omezte alokaci paměti podle skutečné velikosti souboru.
Historický vývoj a milníky
Klíčové výhody a přednosti
- Hlavičku a vzorky pixelů PPM lze snadno zapisovat z grafického programu. Pokud potřebujete zpracovat textové i binární varianty nebo bezpečně ošetřit chybné soubory, použijte knihovnu.
- Režim ASCII (P3) umožňuje programátorům prohlížet, kopírovat a upravovat surové hodnoty barev RGB přímo v textovém editoru.
- PPM se používá jako jednoduchý mezilehlý nebo výstupní formát v některých kurzech počítačové grafiky a příkladech raytracerů.
Technická omezení a nevýhody
- Nekomprimované 8bitové obrázky P6 mohou být velké; RGB obrázek o rozměrech 3840 × 2160 pixelů zabere pro obrazová data přibližně 24,9 milionu bajtů, bez hlavičky.
- Neefektivní pro webovou distribuci nebo přenos po síti.
- Žádná podpora pro alfa průhlednost nebo vložené barevné profily.
Zajímavé technické drobnosti
- Některé úvodní příklady raytracerů používají PPM jako výstupní formát, protože jeho obrazová data lze snadno zapisovat.
- V ASCII PPM ('P3') je obrázek doslova textovým souborem čísel: '255 0 0' pro červenou, '0 255 0' pro zelenou, '0 0 255' pro modrou.
- Sada Netpbm byla původně distribuována na páskách 4.3BSD Unix koncem 80. let.
Často kladené technické otázky
Proč kurzy informatiky používají formát PPM?
PPM ukládá vzorky RGB pixelů v souboru s krátkou hlavičkou, takže raytracer může zapsat obrázek bez složitého kodeku. Aplikace však musí zvládnout textovou variantu P3 i binární variantu P6 a pravidla pro bitovou hloubku vzorků.
Jaký je rozdíl mezi formáty PPM typu P3 a P6?
P3 ukládá trojice RGB jako prostá textová čísla ASCII, zatímco P6 ukládá trojice RGB jako surové binární bajty.
Jak mohu převést soubor PPM do formátu JPG nebo PNG?
Soubory PPM můžete převést do formátu PNG nebo JPG přímo ve svém prohlížeči pomocí aplikace File2File.app, aniž by z vašeho zařízení odešla jakákoli data.