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

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

    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? Il post di Q & A di SuperUser di oggi aiuta a chiarire la confusione per un lettore curioso.

    La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte basato sulla comunità.

    La domanda

    Il lettore SuperUser 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 senza perdita di dati. Tuttavia, quando sto usando un editor di immagini come Gimp e provo a salvare un'immagine come un file PNG, richiede un livello di compressione compreso tra 0 e 9..

    Se ha un parametro di compressione che influenza la precisione visiva dell'immagine compressa, in che modo PNG è quindi senza perdite? 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

    Contributi SuperUser LordNeckbeard e jjlin hanno la risposta per noi. Prima su, LordNeckbeard:

    PNG è compresso, ma senza perdita di dati

    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.

    Diversi livelli di compressione, stessa uscita decodificata

    Sebbene le dimensioni dei file siano diverse a causa dei diversi livelli di compressione, l'output effettivo decodificato sarà identico. È possibile confrontare gli hash MD5 delle uscite decodificate con ffmpeg usando il muxer MD5. Questo è meglio mostrato con alcuni esempi.

    Crea file PNG

    • 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 di più per la codifica e cinque volte più a lungo per decodificare rispetto a 0 (il livello di compressione più basso) in questo esempio.

    Confronta la dimensione del file

    Decodifica i file PNG e mostra gli hash MD5

    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.

    Pensalo come qualità della compressione o livello di compressione. Con una compressione inferiore, ottieni un file più grande, ma richiede meno tempo per produrre, mentre con una compressione più alta, ottieni un file più piccolo che impiega più tempo a produrre.

    Generalmente si ottengono rendimenti decrescenti, cioè 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.