Pixmap portatile (.ppm)

Netpbm Standard

Il formato Portable Pixmap (PPM) è lo standard RGB a colori della famiglia di grafica Netpbm, che fornisce la rappresentazione non compressa più semplice possibile di immagini digitali Truecolor.

Ispezione e metadati

I sistemi operativi e gli analizzatori di file identificano i file PPM ispezionando la sequenza di byte binari iniziale:

Seleziona o rilascia i file qui

Privato - i file non lasciano mai il tuo dispositivo

o incolla Ctrl+V
Garanzia di privacy con zero trasmissioni di rete: 0 byte caricati su server esterni. Tutta l'elaborazione è avvenuta localmente nella sandbox del tuo browser.

Firma dell'intestazione a livello di byte (Magic Bytes)

I sistemi operativi e gli analizzatori di file identificano i file PPM ispezionando la sequenza di byte binari iniziale:

FIRMA ESADECIMALE (OFFSET 0):

50 33 / 50 36

RAPPRESENTAZIONE ASCII: P3 / P6

Standardizzazione: Netpbm Library Standard

Specifiche tecniche

Architettura del contenitoreFormato Netpbm ASCII (P3) o binario (P6) con larghezza, altezza, valore massimo del colore e flusso di terne RGB
CompressioneByte binari grezzi non compressi o terne di testo ASCII leggibili dall'uomo
Endianness dei byteBig-Endian (per campioni a 48 bit, 16 bit per canale, in modalità P6)
Spazi coloreRGB lineare o sRGB standard
Canali e struttura3 canali RGB (Truecolor a 24 o 48 bit)
Dimensioni massimePraticamente illimitato (supporta uno spazio di coordinate arbitrario a 64 bit)
TrasparenzaNessuna (il PPM standard è rigorosamente RGB opaco)
Streaming e progressivoRiproduzione in streaming sequenziale riga per riga

Matrice di confronto tecnico: PPM vs Concorrenti

Attributo tecnicoPPM (Attuale)BMPPNGTIFF
Profondità di coloreRGB Truecolor a 24 / 48 bitDa 1 a 32 bit RGBARGBA a 24 / 48 bitDa 8 a 64 bit RGBA
Formato della famiglia NetpbmPPM (Portable Pixmap)Formato non NetpbmFormato W3C non NetpbmFormato Adobe non Netpbm
Byte magiciP3 (ASCII) / P6 (binario)BM (0x42 0x4D)‰PNG....II*\0 o MM\0*
CompressioneNon compressoNon compresso / RLECompressione Deflate senza perdita; il risparmio dipende dal contenuto dell’immagineLZW / Deflate / Zip

Modalità di corruzione comuni e guida al recupero esadecimale

L'immagine viene renderizzata con uno scorrimento diagonale del canale di colore.

Causa principale: Byte troncato nel flusso di terne RGB che causa il disallineamento dei successivi byte rosso, verde e blu.

Ripristino: Riallineare gli offset delle terne RGB o convertire utilizzando il convertitore Netpbm di File2File.app.

Analisi di sicurezza e vettori di attacco del parser

I decoder PPM devono evitare overflow di interi nel calcolo delle dimensioni dei buffer per le terne RGB a 3 byte.

Vettori di attacco noti

  • Overflow di interi durante l’allocazione del buffer larghezza × altezza × 3.
  • Lettura oltre i limiti del buffer durante la lettura di token ASCII malformati in modalità P3.
  • Interruzione del servizio causata da richieste di allocazione di memoria eccessive.

Migliori pratiche difensive: Applicare rigorosi limiti di allocazione della memoria basati sulla dimensione fisica del file prima della decodifica.

Origini storiche e tappe fondamentali

2000Aggiunta alla specifica Netpbm P6 della profondità di colore a 48 bit (16 bit per canale).
1993Diventa un formato intermedio usato da alcuni strumenti di conversione grafica Unix del toolkit Netpbm.
1989Jef Poskanzer completa il triumvirato Netpbm (PBM, PGM, PPM) con il formato PPM a colori.

Vantaggi principali

  • L’intestazione e i campioni di pixel PPM sono facili da scrivere da un programma di grafica. Usa una libreria se devi analizzare entrambe le varianti, ASCII e binaria.
  • La modalità ASCII (P3) consente ai programmatori di visualizzare, copiare e modificare i valori dei colori RGB grezzi direttamente in un editor di testo.
  • PPM viene usato come semplice formato intermedio o di output in alcuni corsi di computer grafica e negli esempi di ray tracing.

Limiti tecnici e svantaggi

  • Dimensioni dei file enormi a causa della mancanza di compressione (una foto 4K è di circa 25 megabyte).
  • Inefficiente per la distribuzione sul web o il trasferimento in rete.
  • Nessun supporto per la trasparenza alfa o profili colore incorporati.

Curiosità tecniche

  • Alcuni esempi introduttivi di ray tracing usano PPM come formato di output perché i dati dei pixel sono semplici da scrivere.
  • Nel PPM ASCII ('P3'), un'immagine è letteralmente un file di testo di numeri: '255 0 0' per il rosso, '0 255 0' per il verde, '0 0 255' per il blu.
  • La suite Netpbm fu distribuita inizialmente sulle versioni Unix 4.3BSD su nastro alla fine degli anni Ottanta.

Domande tecniche frequenti

Perché i corsi di informatica usano PPM?

PPM memorizza campioni di pixel RGB con un’intestazione breve, così un ray tracer può scrivere un’immagine senza codec complessi. L’applicazione deve comunque gestire le varianti P3 e P6.

Qual è la differenza tra PPM P3 e P6?

P3 memorizza le terne RGB come semplici numeri di testo ASCII, mentre P6 memorizza le terne RGB come byte binari grezzi.

Come posso convertire un file PPM in JPG o PNG?

Puoi convertire i file PPM in PNG o JPG direttamente nel browser con File2File.app, senza che i dati lascino il dispositivo.