Perché le persone usano le immagini JPG?


17

Vedo immagini JPG ovunque. Ma perché?

I file PNG hanno opacità, mentre i file JPG no. Ho provato ad esportare alcune immagini in PNG e JPG per confrontare le dimensioni, ed entrambe corrispondono o il PNG è più piccolo (a seconda dell'immagine ovviamente).

inserisci qui la descrizione dell'immagine

Questa è un'immagine JPG da 512x512 che dice "JPG"

inserisci qui la descrizione dell'immagine

E questa è un'immagine PNG da 512x512 che dice "PNG".

Il JPG era 31.7kb e il PNG era 25.9kb

Quindi cosa dà?


3
Qualcosa che dovresti anche sapere è che .png è senza perdita, mentre .jpg non lo è. Quindi .png è più adatto alle immagini sorgente, mentre .jpg è più adatto alla pubblicazione.
Nessuno il

1
@Nobody PNG può essere lossy o lossless. A seconda di come lo esporti.
DA01,

8
Cordiali saluti, useresti raramente JPG come line art, come gli esempi che usi qui. Quindi basato esclusivamente su questi esempi, non useresti JPG. Se queste fossero foto, però, ti renderai conto di ottenere risultati completamente diversi.
DA01,

7
Non riesco davvero a credere che questa domanda sia sopravvissuta per più di 10 secondi.
borghese il

2
@ DA01 PNG non è mai in perdita, ma è possibile manipolare con perdita l'immagine prima di esportarla in PNG per ridurla. Le specifiche PNG non sanno nulla di ciò.
Nessuno il

Risposte:


35

Perché sono molto più bravi a comprimere immagini che hanno molti colori e forme irregolari, come le fotografie.

Hai provato lo stesso epxeriment che hai fatto, ma poi con una fotografia? Molto probabilmente il .png sarà notevolmente più grande di qualsiasi .jpg, indipendentemente dal fattore di compressione del .jpg.

Esempio:

immagine png
.png immagine, 110k

jpeg a 100 qualità
.jpg al 100% di qualità, 63k

jpeg a 30 qualità
.jpg al 30% di qualità, un misero 9k

Se guardi da vicino, vedrai alcuni artefatti sulla qualità .jpg del 30%, ma ciò è dovuto principalmente al fatto che il bordo duro della lampadina contro lo sfondo verde liscio non si presta troppo bene all'algoritmo di compressione. Puoi avere immagini regolari ridotte a una qualità del 10 o 5% senza alcuna perdita che noteresti a colpo d'occhio.


3
FWIW: dopo aver ottimizzato il PNG ha 34 KB senza alcuna perdita riconoscibile.
Mario,

Wow, non l'ho mai saputo. Ho provato a convertire una fotografia scattata in PNG ed è passata da 550k a 2933k. Sai cosa lo rende il caso?
JediBurrell,

10
La compressione PNG di @JediBurrell è sempre senza perdita (AFAIK), mentre la compressione di JPG alla fine lascerà cadere le informazioni sull'immagine. Nel tuo caso, un'immagine già compressa di JPG sebbene di bell'aspetto conterrà i bordi intorno a ciascun bucket (quadratini compressi che compongono un'immagine JPG) e PNG raccoglie questi artefatti in modo che non vengano persi. Quindi, il tuo PNG è molto più grande del tuo JPG originale. Ricomprimere un JPG usando JPG peggiorerà molte volte - l'effetto si chiama "meta-blocco".
Jay Versluis,

2
@JediBurrell Se sei interessato ai dettagli tecnici e matematici puoi guardare questo video di Computerphile.
Paul Manta,

2
"lo sfondo verde liscio non si presta molto bene all'algoritmo di compressione": è il contrario, i gradienti sono ben rappresentati da JPEG, mentre i bordi duri non lo sono, producendo artefatti nelle vicinanze. Per i curiosi, leggi di Fourier che trasforma un segnale quadrato.
Lloeki,

13

JPEG ha il supporto dell'industria fotografica e precede PNG di una mezza dozzina di anni circa, mentre PNG è stato progettato come sostituto di GIF, che è stato protetto con zelo da CompuServe. Le persone sono state citate in giudizio per aver utilizzato le GIF sui loro siti Web, ad esempio semplicemente perché non utilizzavano un programma concesso in licenza da CompuServe per realizzare tali immagini.

Fin dall'inizio, JPEG è stato progettato per recuperare un po 'di spazio riducendo i file, a scapito della qualità pixel-perfect. Anche l'impostazione di Q su 100 causerà artefatti minori, per lo più invisibili: il danno viene fatto e ogni volta che il file viene modificato e salvato, si verificano ulteriori danni. Tuttavia, a meno che non lo facciate così tante volte, probabilmente non noterete mai l'effetto a meno che non andiate a cercarlo.

PNG, d'altra parte, è perfettamente senza perdite. Ogni pixel viene riprodotto fedelmente ogni volta, indipendentemente da quante volte il file viene modificato e salvato. Esiste un limite alla capacità di comprimere i dati senza perdita, tuttavia, sebbene PNG impieghi diversi trucchi per impacchettare quante più informazioni nel minor numero di byte possibile di dati. Un JPEG di alta qualità avrà probabilmente le stesse dimensioni di un PNG senza ottimizzazione o addirittura più grande. Mentre PNG inizia ad ottimizzare, ad esempio, usando i filtri o regolando le dimensioni della finestra, il file diventa più piccolo senza perdita, mentre JPEG deve iniziare a scartare le informazioni visive per tenere il passo.

Quindi, perché viene utilizzato JPEG? Dopotutto, è generalmente inferiore in termini di fedeltà e spazio di archiviazione. Il motivo principale, ovviamente, è che è uno standard del settore e ha un supporto molto ampio. Praticamente ogni fotocamera al mondo utilizza RAW (letteralmente, i dati non elaborati) o JPEG. Ci sono processori di dati hardware integrati in quelle telecamere per comprimere i dati JPEG il più velocemente possibile, ecc.

Scoprirai che questo è lo stesso motivo per cui GIF è ovunque ferma. La maggior parte dei software supporta GIF, mentre PNG gode di un supporto minore nei software meno recenti (ad es. Le versioni precedenti di Internet Explorer richiedono un plug-in per mostrare i file PNG). Anche se ha un pessimo supporto per i colori, supporta le animazioni, cosa che PNG non fa (esiste un formato di file correlato, APNG, che non è mai decollato come il PNG). GIF rimane ancora il campione delle immagini animate, in quanto è l'unico formato di file che può farlo con un supporto diffuso.

Il costo per passare da JPEG a PNG sarebbe proibitivo dal punto di vista dell'hardware. Le telecamere avrebbero bisogno di nuovi processori costruiti per supportare la compressione PNG veloce, ad esempio, perché sono codificati per usare subito JPEG. Le tue vecchie macchine fotografiche sarebbero prive di valore, perché dovresti acquistarne una nuova con un chip PNG integrato. Ciò significherebbe anche che dovresti convincere un produttore a andare contro gli standard del settore e iniziare a fabbricare tali dispositivi, il che significa che ci dovrebbe essere abbastanza domanda per giustificarlo, e tali telecamere inizialmente sarebbero più costose delle loro basate su JPEG controparti. È molto difficile cambiare un settore.


PNG è potenzialmente senza perdite. Il software di salvataggio può scegliere di perdere dati difficili per un migliore formato comprimibile. La natura vavelet di jpeg rende impossibile la sua perdita.
joojaa,

@joojaa Puoi eseguire il backup dell'affermazione secondo cui la compressione PNG "potrebbe scegliere di perdere dati difficili"?
CJ Dennis,

@joojaa JPEG utilizza la compressione DCT, non wavelet. Potresti pensare a JPEG 2000.
Bcrist

7
Comprendo che la riduzione del colore si verifica prima che l'immagine venga trasmessa al codec PNG. Solo perché un formato è in grado di archiviare dati già in perdita non lo rende in perdita. Cambiare un RGB a 32 bit con l'immagine Alpha in un'immagine in bianco e nero a 1 bit perderà molti dati, ma non è PNG che lo sta facendo. La riduzione della profondità del colore è una conversione con perdita, non una compressione con perdita .
CJ Dennis,

2
Il mio errore DCT lo è. Il mio punto è che mentre PNG è senza perdita non tutti gli ottimizzatori PNG lo sono! Quindi, senza sapere cosa hai usato, non sai se il processo è fallito o no. Quindi la domanda sulla non perdita non è così semplice come si pensa. Proprio come accadono cambiamenti di profondità del colore prima di salvare gli ottimizzatori PNG potrebbero alterare le immagini in altri modi prima del salvataggio, per un ingombro ridotto. @JCDennis Questi cruncher esistono, basta vedere le loro pagine di manuale.
joojaa,

7

Qualcosa che non è menzionato in dettaglio è il modo in cui funzionano questi algoritmi di compressione. JPEG è indirizzato direttamente alle fotografie in cui non si notano lievi cambiamenti nel colore dei pixel. Il PNG è più mirato per le immagini fabbricate che contengono ampie aree di un singolo colore in cui la compressione viene sfruttata appieno come nel tuo esempio di una grande foto tutta bianca con semplici scritte nere. Se hai scattato la stessa foto e hai messo lo sfondo bianco per sfumare uniformemente dal bianco al grigio attraverso l'immagine lateralmente, le dimensioni del png aumenterebbero drasticamente e il jpg avrebbe probabilmente poche modifiche. Ho fatto un po 'di programmazione circa 10 anni fa direttamente con entrambi questi formati per decomprimere questi tipi di file in bmps. JPEG è molto sofisticato e complesso. Il PNG è molto semplice e efficace solo su alcune immagini in cui il colore è immutabile nelle linee orizzontali


1
Hai davvero provato questo? PNG non è semplicemente una codifica di lunghezza ed è molto più sofisticato di quanto tu suggerisca. Utilizza un algoritmo adattivo e comprime efficacemente sia le aree solide che i modelli ripetuti.
z7sg Ѫ
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.