Anzeige
Anzeige
Ratgeber

Das JPG-Format – der Guide für ein perfektes Ergebnis

Das Leben als Entwickler kann ganz schön hart sein. Vor allem beim Versuch, den besten Kompromiss aus Bildqualität und Komprimierung zu finden. Zeit, JPGs von Grund auf zu verstehen und einige Tricks auszupacken.

Von Christoph Erdmann
5 Min.
Artikel merken
Anzeige
Anzeige

(Screenshot: Christoph Erdmann)

Die ersten Bilder von Menschenhand entstanden während der letzten Eiszeit aus Holzkohle und Eisenoxid. Die einzigen Farben: Schwarz und Rot. Heute sind wir da etwas weiter: Das allgegenwärtige JPG-Format unterstützt 16,7 Millionen Farben, ist online sowie im Drucker der Klassiker und kann wenige Kilobyte bis viele Megabyte groß sein. Zusätzlich treibt es Entwicklern regelmäßig den Schweiß auf die Stirn, wenn es seinem Namen als verlustbehaftete Komprimierung alle Ehre macht.

Anzeige
Anzeige

Dieser Artikel vermittelt euch ein umfassendes Verständnis des JPG-Formats und eine Handvoll Tipps, wie ihr die beste Bildqualität aus kleinen Dateien herausholt. Einige Aspekte werde ich praktischerweise vereinfacht darstellen, auch wenn es vielleicht nicht exakt ist. Zum Beispiel gehe ich bei der Farbdarstellung von einer Acht-Bit-Farbtiefe aus, obwohl JPG auch noch andere Farbtiefen unterstützt.

Farbmodell-Konvertierung

Bilder liegen meistens im Farbmodell RGB vor. Das heißt, sie werden über Rot, Grün und Blau auf eurem Monitor dargestellt. Soll ein Pixel weiß sein, leuchten alle drei Farben auf. Mit der richtigen Mischung lassen sich für jedes Pixel circa 16,7 Millionen (256 hoch 3) Farben darstellen.

Anzeige
Anzeige

(Screenshot: Christoph Erdmann)

Besonders aussagekräftig ist die Darstellung in Graustufen:

Anzeige
Anzeige

(Screenshot: Christoph Erdmann)

Ein weißes Pixel bedeutet, dass die jeweilige Farbe so stark wie möglich leuchtet (also mit dem Wert 256). Befindet sich an einer Stelle eine der drei Farben nicht, sehen wir ein schwarzes Pixel.

Der JPG-Algorithmus konvertiert zuerst alle Bilder vom RGB- in das YCbCr-Farbmodell. Dieses trennt die Helligkeit von der Farbe:

Anzeige
Anzeige

(Screenshot: Christoph Erdmann)

In diesem Beispiel trägt der Helligkeitskanal (Y) sehr viel zum Gesamteindruck des Bildes bei. Noch besser erkennbar bei der Darstellung der Intensitätswerte:

(Screenshot: Christoph Erdmann)

Je stärker der Kontrast und je besser das Ursprungsbild in einem Kanal erkennbar ist, desto mehr relevante Informationen stecken in ihm.

Color-Subsampling

Da unser Auge Kontraste sehr viel besser als Farben wahrnehmen kann, gibt es beim JPG die Möglichkeit, beispielsweise drei Viertel der Farbinformationen einfach wegzulassen:

Anzeige
Anzeige

(Screenshot: Christoph Erdmann)

Dieses Vorgehen heißt Color-Subsampling. Gebräuchlich sind das Vierteln der Informationen, wie oben dargestellt (bezeichnet als 2×2 oder 4:2:0), oder das Beibehalten aller Farbinformationen (bezeichnet als 1×1 oder 4:4:4).

Bei vielen Programmen könnt ihr das Color-Subsampling leider nicht einstellen. Photoshop verwendet bei den Qualitätswerten 100 bis 51 automatisch die 1×1-Variante, bei allem darunter 2×2. Deshalb gibt es auch einen enormen Dateigrößen-Sprung, wenn ihr die Kompression von 51 auf 50 schiebt.

JPG-Blöcke und verlustbehaftete Komprimierung

Ein JPG wird stets in 8×8 Pixel große Blöcke zerlegt. Jeder Block wird einzeln komprimiert, ohne dass es einen Zusammenhang zu den anderen gibt.

Anzeige
Anzeige

In solch einem 8×8-Block gibt es 64 Intensitäts-Werte (einen für jedes Pixel), die allerdings von ihren Werten — hintereinander aufgeschrieben — ziemlich durcheinandergewürfelt und daher schlecht zu speichern sind. Das Ziel bei der Entwicklung des JPG-Algorithmus war es deshalb, diese Bildinformationen zu sortieren. Jene mit großem Einfluss auf das Bild sollten vorn stehen und weniger wichtige hinten. Dafür wurde aber eine andere Darstellung benötigt. Lösung: Das
Übereinanderlegen von Kosinus-Kurven.

Es wurden also 64 Muster — bestehend aus Kosinus-Kurven — definiert, die den Bildinhalt eines 8×8-Blocks darstellen können, wenn sie übereinandergelegt werden:

(Screenshot: Christoph Erdmann)

Von links oben (grobe Bildinformationen) nach rechts unten (Details) gesehen haben die Kurven immer weniger Anteil am Bildeindruck. Erkennbar daran, dass wir die Muster links oben sehr gut voneinander unterscheiden können — die rechts unten eher nicht.

Anzeige
Anzeige

Je nachdem, wie sehr ein JPG komprimiert wird, fließt jede Kurve unterschiedlich stark in die gespeicherte Datei ein, um den Original-Inhalt darzustellen. Es werden also nach wie vor 64 Werte gespeichert — allerdings sind sie nach ihrem Einfluss auf das Endergebnis sortiert. Diese Umrechnung der Pixel-Intensitäts-Werte wird diskrete Kosinustransformation (DCT) genannt.

Je nach gewählter Qualitätsstufe kann ein Programm so die weniger zum Bildeindruck beitragenden Werte weglassen. Bei „Qualität 5” ist deutlich zu sehen, dass nur noch Muster aus der linken oberen Ecke verwendet werden und die JPG-typischen Block-Artefakte entstehen:

(Screenshot: Christoph Erdmann)

Welche Muster wie stark weggelassen werden, wird durch sogenannte Quantisierungstabellen festgelegt. Diese werden vom Programm-Entwickler frei definiert. Es hat sich zwar eingebürgert, eine Skala von Null bis Hundert zu verwenden, aber was genau diese Werte zu bedeuten haben, ist jedem Programm selbst überlassen.

Anzeige
Anzeige

Qualitätsstufen verschiedener Programme sind also nicht miteinander vergleichbar. Bei der diskreten Kosinustransformation benötigen kontrastreiche und detailreiche Blöcke am meisten Speicherplatz.

Die wohl bekanntesten Artefakte der JPG-Kompression. Sie entstehen, weil jeder 8×8-Pixel-Block für sich selbst komprimiert wird und dabei Ungenauigkeiten zwischen Block-Nachbarn entstehen. (Screenshot: Christoph Erdmann)

Oft zu sehen, wenn kontrastreiche Details und kontrastarme Flächen gleichzeitig in einem 8×8-Pixel-Block auftreten. Der Algorithmus sucht für die Details ein Muster aus der unteren rechten Ecke der Mustertabelle heraus, welcher bei der Fläche jedoch zu Bildrauschen führt. (Screenshot: Christoph Erdmann)

Struktur der Datei

Die Bilddaten einer JPG-Datei können vom Algorithmus auf zwei verschiedene Arten hinterlegt werden, was aber keinen Einfluss auf die Qualität hat. Die erste Möglichkeit ist „Baseline”, bei der die 8×8-Pixel-Blöcke hintereinander abgelegt werden. Ein Baseline-kodiertes JPG erkennt ihr daran, dass es sich zeilenweise im Browser aufbaut.

(Screenshot: Christoph Erdmann)

Die zweite Möglichkeit ist „Progressive”, durch die erst alle groben Muster gespeichert werden und danach die feineren. Ein großes Progressive-strukturiertes JPG erkennt ihr daran, dass es zuerst grob dargestellt wird, nach und nach aber feiner wird.

Anzeige
Anzeige

(Screenshot: Christoph Erdmann)

Grundsätzlich ist der progressive Aufbau aus zwei Gründen zu bevorzugen: Es entsteht sehr viel schneller ein Eindruck der besuchten Homepage — und progressive JPGs sind meist kleiner als jene der Baseline-Variante.

Tricks zur Verringerung der Dateigröße

1. Gutes Ausgangsmaterial verwenden

Um ein gutes JPG zu erstellen, muss euer Ausgangsmaterial von guter Qualität sein. Dadurch wird eure Datei am Ende besser aussehen und kleiner sein, als wenn ihr es aus einem schon vorher komprimierten JPG erstellt.

2. Ausrichtung am Acht-Pixel-Raster

Beim folgenden Bild wurden Schrift und Rahmen an den Rändern des 8×8-Pixel-Rasters ausgerichtet. Somit muss der JPG-Algorithmus keine Muster mit vielen Details aus der Mustertabelle wählen, um den Übergang zwischen Schwarz und Weiß darzustellen. Die ausgerichtete Version ist deshalb nicht nur bedeutend kleiner, sondern auch ein wenig schärfer.

(Screenshot: Christoph Erdmann)

3. Kontrast und Sättigung verringern

Wie zuvor dargestellt, lässt sich eine Datei verkleinern, wenn ihr den Kontrast verringert. Genauso verhält es sich bei der Sättigung, da diese eine Kontraständerung der Farbkanäle ist.

(Screenshot: Christoph Erdmann)

4. Sepia-Bilder

Anstatt Farben im JPG-Bild zu verwenden, ist es eine Überlegung wert, es als Graustufenbild abzuspeichern und es nachträglich per CSS einzufärben. Leider unterstützen nur wenige Programme Graustufen-JPGs — selbst Photoshop nicht.

(Screenshot: Christoph Erdmann)

5. Leichtes Weichzeichnen

Durch geringfügiges Weichzeichnen wird der Kontrast im 8×8-Block verringert. Somit wird das JPG kleiner. Unser Auge ist jedoch besonders auf die Wahrnehmung von Kanten geschult, weshalb ich den sogenannten selektiven Weichzeichner empfehle. Dieser lässt Kanten unangetastet.

(Screenshot: Christoph Erdmann)

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige