30Aug

Il formato PNG è senza perdita dal momento che ha un parametro di compressione?

come-è-il-png-formato-lossless-dal-it-ha-un-compressione-parametro-00

Il formato PNG dovrebbe essere un formato senza perdita di dati, ma quando si salva un'immagine come file PNG, viene chiesto di scegliere un livello di compressione. Questo significa che il formato PNG in realtà non è senza perdita, dopo tutto? Oggi il post di SuperUser Q & A aiuta a chiarire la confusione per un lettore curioso.

Today's Question &La sessione di risposta ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di Q & A basato su community.

La domanda

SuperUser reader pkout vuole sapere se la qualità di un'immagine PNG è influenzata dal livello di compressione scelto:

A quanto ho capito, i file PNG usano la compressione lossless. Tuttavia, quando sto usando un editor di immagini come Gimp e provo a salvare un'immagine come file PNG, richiede un livello di compressione compreso tra 0 e 9.

Se ha un parametro di compressione che influenza la precisione visiva del file compressoimmagine, come è quindi PNG lossless? Qualcuno può spiegarmelo per favore? Ricevo un comportamento senza perdite solo quando imposto il livello di compressione su 9?

C'è una differenza nella qualità dell'immagine a seconda del livello di compressione che scegli?

La risposta

SuperUser contributors LordNeckbeard e jjlin hanno la risposta per noi. Innanzitutto LordNeckbeard:

PNG è compresso, ma Lossless

Il livello di compressione è un compromesso tra la dimensione del file e la velocità di codifica / decodifica. Per generalizzare eccessivamente, anche i formati non immagine come FLAC hanno concetti simili.

Livelli di compressione diversi, stessa uscita decodificata

Anche se le dimensioni del file sono diverse a causa dei diversi livelli di compressione, l'uscita effettiva decodificata sarà identica.È possibile confrontare gli hash MD5 delle uscite decodificate con ffmpeg usando il muxer MD5.Questo è meglio mostrato con alcuni esempi.

Crea file PNG

come-è-il-png-formato-senza perdite poiché-da-has-a-compressione-parametro-01

  • Per impostazione predefinita, ffmpeg utilizzerà -compression_level 100 per l'output PNG.
  • Un test rapido e sciatto ha mostrato che 100( il più alto livello di compressione) ha impiegato circa tre volte più a lungo per la codifica e cinque volte più a lungo per decodificare rispetto a 0( il livello di compressione più basso) in questo esempio.

Confronta le dimensioni del file

come-è-il-png-formato-senza perdite poiché-da-has-a-compressione-parametro-02

Decodifica i file PNG e mostra gli hash MD5

come-è-il-png-formato-lossless-dal-it-ha-un-compressione-parametro-03

Poiché entrambi gli hash sono uguali, puoi essere certo che gli output decodificati( i file raw non compressi) sono esattamente gli stessi.

Seguito dalla risposta di jjlin:

PNG è senza perdite. Probabilmente GIMP non utilizza la migliore scelta di testo in questo caso.

Consideralo come qualità di compressione o livello di compressione .Con una compressione inferiore, si ottiene un file più grande, ma richiede meno tempo per la produzione, mentre con una compressione più alta, si ottiene un file più piccolo che richiede più tempo per produrre.

In genere si ottengono rendimenti decrescenti, vale a dire non tanto diminuzione delle dimensioni rispetto all'aumento del tempo necessario quando si sale ai livelli di compressione più elevati, ma dipende da voi.

Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.