Warum verwenden Leute JPG-Bilder?

17

Ich sehe überall JPG-Bilder. Aber wieso?

PNG-Dateien sind lichtundurchlässig, JPGs hingegen nicht. Ich habe versucht, einige Bilder in PNG und JPG zu exportieren, um die Größe zu vergleichen, und beide stimmen überein oder die PNG ist kleiner (je nach Bild natürlich).

Bildbeschreibung hier eingeben

Dies ist ein 512x512 JPG-Bild mit der Aufschrift "JPG".

Bildbeschreibung hier eingeben

Und dies ist ein 512x512 PNG-Bild mit der Aufschrift "PNG".

Das JPG war 31,7 kb und das PNG war 25,9 kb

Also was gibt es?

JediBurrell
quelle
3
Sie sollten auch wissen, dass .png verlustfrei ist und .jpg nicht. Daher sind .png-Dateien besser für Quellbilder geeignet, während .jpg-Dateien besser für Veröffentlichungen geeignet sind.
Niemand
1
@Nobody PNG kann verlustbehaftet oder verlustfrei sein. Abhängig davon, wie Sie es exportieren.
DA01,
8
Zu Ihrer Information, Sie würden JPG selten für Strichzeichnungen verwenden, wie in den Beispielen, die Sie hier verwenden. Wenn Sie sich also nur auf diese Beispiele stützen, würden Sie JPG nicht verwenden. Wenn es sich jedoch um Fotos handelt, werden Sie feststellen, dass Sie ganz andere Ergebnisse erzielen.
DA01,
7
Ich kann ernsthaft nicht glauben, dass diese Frage mehr als 10 Sekunden überlebt hat.
Zivil
2
@ DA01 PNG ist niemals verlustbehaftet, aber Sie können das Bild vor dem Exportieren in PNG verlustbehaftet bearbeiten, um es zu verkleinern. Die PNG-Spezifikation weiß nichts darüber.
Niemand

Antworten:

35

Weil sie Bilder mit vielen Farben und unregelmäßigen Formen, wie z. B. Fotos, viel besser komprimieren können.

Haben Sie das gleiche Experiment versucht, das Sie durchgeführt haben, aber dann mit einem Foto? Die .png-Datei wird höchstwahrscheinlich merklich größer als jede .jpg-Datei sein, unabhängig vom Komprimierungsfaktor der .jpg-Datei.

Beispiel:

PNG-Bild
PNG-Bild, 110 KB

JPEG bei 100 Qualität
.jpg bei 100% Qualität, 63k

JPEG bei 30 Qualität
.jpg bei 30% Qualität, ein dürftiges 9k

Wenn Sie genau hinschauen, werden Sie einige Artefakte auf der 30% -Qualität .jpg sehen, aber das liegt hauptsächlich daran, dass sich der harte Rand der Glühbirne vor dem glatten grünen Hintergrund nicht gut für den Komprimierungsalgorithmus eignet. Sie können normale Bilder auf 10 oder 5% reduzieren lassen, ohne dass Sie auf einen Blick Verluste bemerken.

Vincent
quelle
3
FWIW: Nach der Optimierung des PNG hat es 34 KB ohne erkennbaren Verlust.
Mario
Wow, das habe ich nie gewusst. Ich habe versucht, ein Foto, das ich aufgenommen habe, in PNG umzuwandeln, und es ist von 550k auf 2933k gestiegen. Wissen Sie, warum das so ist?
JediBurrell
10
@JediBurrell PNG-Komprimierung ist immer verlustfrei (AFAIK), wohingegen die JPG-Komprimierung schließlich Bildinformationen verwirft. In Ihrem Fall enthält ein bereits komprimiertes JPG-Bild, obwohl es gut aussieht, Kanten um jeden Bucket (komprimierte kleine Quadrate, aus denen ein JPG-Bild besteht), und PNG nimmt diese Artefakte auf, damit sie nicht verloren gehen. Daher ist Ihre PNG-Datei viel größer als Ihre ursprüngliche JPG-Datei. Das erneute Komprimieren einer JPG-Datei mit JPG verschlimmert dies um ein Vielfaches - der Effekt wird als "Meta-Blocking" bezeichnet.
Jay Versluis
2
@JediBurrell Wenn Sie sich für die technischen und mathematischen Details interessieren, können Sie dieses Video von Computerphile ansehen .
Paul Manta,
2
"Der glatte grüne Hintergrund eignet sich nicht besonders gut für den Komprimierungsalgorithmus": Im Gegenteil, Gradienten werden sehr gut durch JPEG dargestellt, während harte Kanten keine Artefakte in der Nähe erzeugen. Lesen Sie für Neugierige über die Fourier-Transformation eines Quadratsignals.
Lloeki
13

JPEG hat Rückendeckung aus der Fotoindustrie und ist etwa ein halbes Dutzend Jahre älter als PNG, während PNG als Ersatz für GIF konzipiert wurde, das von CompuServe ziemlich eifrig geschützt wurde. Menschen wurden beschuldigt, GIFs auf ihren Websites verwendet zu haben, zum Beispiel, weil sie kein von CompuServe lizenziertes Programm für die Erstellung dieser Bilder verwendet haben.

Von Anfang an wurde JPEG entwickelt, um durch Verkleinern von Dateien auf Kosten der pixelgenauen Qualität Speicherplatz freizugeben. Selbst wenn Q auf 100 gesetzt wird, entstehen geringfügige, größtenteils unsichtbare Artefakte - der Schaden wird angerichtet, und jedes weitere Mal, wenn die Datei geändert und gespeichert wird, entsteht weiterer Schaden. Allerdings, wenn Sie dies tun , viele Male, werden Sie wahrscheinlich nie den Effekt bemerken , wenn Sie danach suchen gehen.

PNG ist dagegen vollkommen verlustfrei. Jedes Pixel wird originalgetreu wiedergegeben, unabhängig davon, wie oft die Datei geändert und gespeichert wurde. Es gibt jedoch eine Grenze, wie gut Sie Daten ohne Verlust komprimieren können, obwohl PNG mehrere Tricks anwendet, um so viele Informationen wie möglich in so wenige Datenbytes zu packen. Eine JPEG-Datei mit hoher Qualität hat wahrscheinlich die gleiche Größe wie eine PNG-Datei ohne Optimierung oder ist sogar noch größer. Wenn PNG beginnt, beispielsweise durch die Verwendung von Filtern oder das Anpassen der Fenstergröße zu optimieren, wird die Datei ohne Verlust kleiner, während JPEG anfangen muss, visuelle Informationen zu verwerfen, um Schritt zu halten.

Warum wird JPEG verwendet? Immerhin ist es in Bezug auf Wiedergabetreue und Speicherplatz in der Regel unterlegen. Der Hauptgrund ist natürlich, dass es sich um einen Industriestandard handelt und eine sehr breite Unterstützung findet. Praktisch jede Kamera auf der Welt verwendet entweder RAW (buchstäblich die Rohdaten) oder JPEG. In diesen Kameras sind Hardware-Datenprozessoren eingebaut, um die JPEG-Daten so schnell wie möglich zu komprimieren.

Sie werden feststellen, dass dies der gleiche Grund ist, warum GIF immer noch überall ist. Die meisten Programme unterstützen GIF, während PNG in älteren Programmen weniger unterstützt wird (z. B. für ältere Internet Explorer-Versionen ist ein Plugin erforderlich, um PNG-Dateien anzuzeigen). Obwohl es miese Farbunterstützung bietet, unterstützt es Animationen, was PNG nicht kann (es gibt ein verwandtes Dateiformat, APNG, das nie ganz so funktioniert hat wie PNG). GIF ist nach wie vor der Champion animierter Bilder, da es das einzige Dateiformat ist, das dies mit umfassender Unterstützung tun kann.

Die Kosten für den Wechsel von JPEG zu PNG wären für Hardware-Interessenten unerschwinglich. Für Kameras wären neue Prozessoren erforderlich, die die schnelle PNG-Komprimierung unterstützen, da sie derzeit für die Verwendung von JPEG fest programmiert sind. Ihre alten Kameras wären wertlos, da Sie eine neue mit eingebautem PNG-Chip kaufen müssten. Das würde auch bedeuten, dass Sie einen Hersteller davon überzeugen müssten, gegen die Industriestandards zu verstoßen und mit der Herstellung solcher Geräte zu beginnen. Dies würde eine ausreichende Nachfrage nach sich ziehen, und solche Kameras wären anfangs teurer als ihre JPEG-basierten Gegenstücke. Es ist sehr schwierig, eine Branche zu verändern.

Phyrfox
quelle
PNG ist potenziell verlustfrei. Die Speichersoftware verliert möglicherweise Daten, um ein besser komprimierbares Format zu erhalten. Die Vavelet-Natur von JPEG macht es unmöglich, verlustfrei zu sein.
Joojaa
@joojaa Können Sie die Aussage stützen, dass die PNG-Komprimierung "möglicherweise harte Daten verliert"?
CJ Dennis
@joojaa JPEG verwendet die DCT-Komprimierung, nicht Wavelet. Möglicherweise denken Sie an JPEG 2000.
bcrist
7
Ich verstehe, dass die Farbreduzierung erfolgt, bevor das Bild an den PNG-Codec übergeben wird. Nur weil ein Format bereits verlustbehaftete Daten speichern kann, macht es sie nicht verlustbehaftet. Wenn Sie ein 32-Bit-RGB-Bild mit Alpha-Bild in ein 1-Bit-Schwarzweißbild ändern, gehen viele Daten verloren, aber das ist nicht die Aufgabe von PNG. Die Reduzierung der Farbtiefe ist eine verlustbehaftete Konvertierung, keine verlustbehaftete Komprimierung .
CJ Dennis
2
Mein Fehler ist DCT. Mein Punkt ist, dass PNG zwar verlustfrei ist, aber nicht alle PNG-Optimierer es sind! Ohne zu wissen, was Sie verwendet haben, wissen Sie also nicht, ob der Prozess verlustbehaftet war oder nicht. Die Frage nach der Verlustfreiheit ist also nicht so einfach, wie man denkt. Genau wie Farbtiefenänderungen vor dem Speichern von PNG-Optimierern auftreten, können Bilder vor dem Speichern auf andere Weise geändert werden, um den Platzbedarf zu verringern. @JCDennis Diese Cruncher gibt es nur auf ihren Manualseiten.
Joojaa
7

Was nicht im Detail erwähnt wird, ist die Funktionsweise dieser Komprimierungsalgorithmen. JPEG richtet sich direkt an Fotos, bei denen geringfügige Änderungen der Pixelfarbe nicht bemerkt werden. PNG ist eher für fabrizierte Bilder gedacht, die große Bereiche einer einzelnen Farbe enthalten, bei denen die Komprimierung voll ausgenutzt wird, wie in Ihrem Beispiel für ein riesiges, rein weißes Foto mit normaler schwarzer Beschriftung. Wenn Sie dasselbe Foto aufnehmen und den weißen Hintergrund gleichmäßig von Weiß nach Grau über das Bild verteilen würden, würde sich die PNG-Größe drastisch erhöhen und JPG hätte wahrscheinlich nur geringe Änderungen. Ich habe vor ungefähr 10 Jahren einige Codierungen direkt mit diesen beiden Formaten durchgeführt, um diese Dateitypen in BMPS zu dekomprimieren. JPEG ist sehr raffiniert und komplex. PNG ist sehr einfach und nur bei bestimmten Bildern sehr effektiv, bei denen sich die Farbe in horizontalen Linien nicht ändert

Ryan
quelle
1
Hast du das schon probiert? PNG ist nicht einfach eine Lauflängencodierung und weitaus ausgefeilter als Sie vermuten. Es verwendet einen adaptiven Algorithmus und komprimiert effektiv sowohl feste Bereiche als auch wiederholte Muster.
z7sg Ѫ