Menü

Werkzeuge durchsuchenÄnderungsprotokoll

zum Navigieren zum ÖffnenBeschreiben Sie das Problem, nicht das Tool

Ratgeber

Warum verlustfreie Bilder manchmal kleiner sind als verlustbehaftete

„Verlustbehaftet ist kleiner, verlustfrei ist größer“ ist eine vernünftige Faustregel, die oft genug falsch ist, um von Bedeutung zu sein. Welcher gewinnt, hängt davon ab, was im Bild ist, und nicht davon, welcher Modus aggressiver klingt – und für Screenshots, Logos, Diagramme und Diagramme erzeugt der verlustfreie Encoder häufig die kleinere Datei *und* die perfekte.

Die Faustregel und wo sie bricht

Bei der verlustbehafteten Komprimierung werden Informationen weggeworfen, daher sollte immer eine kleinere Datei erzeugt werden als bei der verlustfreien Komprimierung. Das trifft auf Fotos zu und ist oft genug falsch, um verständlich zu sein.

Entscheidend ist, wie vorhersehbar das Bild ist.

Verlustfreie Encoder funktionieren, indem sie Wiederholungen und Strukturen finden – eine Reihe identischer Pixel, eine Reihe, die der darüber liegenden Reihe ähnelt, eine Palette von sechzehn Farben, die im gesamten Bild verwendet werden. Geben Sie einem einen Screenshot und er wird eine enorme Regelmäßigkeit finden und ihn fast kostenlos kodieren.

Verlustbehaftete Encoder funktionieren, indem sie Details verwerfen, die das Auge nicht wahrnehmen kann, vor allem in Farbe und in hochfrequenten Texturen. Geben Sie einem ein Foto und es gibt eine Menge zu verwerfen. Geben Sie ihm ein Logo auf einem flachen Hintergrund und es gibt fast nichts – aber es bezahlt immer noch die vollen Kosten für die Transformation, und schlimmer noch, es erzeugt sichtbare Ringelungen an den scharfen Kanten, für die es nie entwickelt wurde.

Vor dem Weiterlesen

Sie speichern dasselbe Foto zweimal: einmal verlustfrei, einmal mit hoher verlustbehafteter Qualität. Welche Datei ist kleiner?

  • Fast immer für ein Foto – aber „immer“ ist der Grund, warum dies die falsche Antwort ist.

  • Ja – es hängt ganz davon ab, was auf dem Bild zu sehen ist.

Es kommt auf das Bild an. Ein Foto ist voller Rauschen und Farbverläufe, die durch die verlustbehaftete Komprimierung kostengünstig verworfen werden, so dass verlustbehaftete Bilder problemlos gewinnen. Eine flache Grafik mit großen Bereichen identischer Farbe lässt sich hervorragend verlustfrei komprimieren, und eine verlustbehaftete Kodierung kann sie sowohl größer als auch sichtbar schlechter machen. The content decides, not the format.

Was gewinnt und wann

InhaltNormalerweise kleinerWarum
FotografienVerlustbehaftet, sehrLaut und detailliert; es gibt viel zu verwerfen
Screenshots, BenutzeroberflächeVerlustfreiGroße flache Flächen, wiederholte Reihen, wenige deutliche Farben
Logos, Symbole, StrichzeichnungenVerlustfreiScharfe Kanten sind genau das, was verlustbehaftet zu bewältigen ist
Diagramme und DiagrammeVerlustfreiFlache Füllungen plus Text; Textklingeln ist deutlich sichtbar
Alles, was Text enthältVerlustfreiDas Ringen um Glyphen ist das auffälligste Artefakt, das es gibt
Sehr kleine BilderEntweder – oft auch nichtDer Header-Overhead dominiert unterhalb einiger hundert Bytes

Die letzte Reihe ist diejenige, die die Leute überrascht. Unter etwa einem Kilobyte kostet der Container mehr als der Inhalt, und eine Konvertierung kann eine Datei tatsächlich vergrößern. Das ist kein Fehler im Konverter.

Ein gelungenes Beispiel

Ein 32×32-Testbild mit einem sanften Farbverlauf, einem scharf umrandeten roten Quadrat und gesättigten Primärfarben – absichtlich ungeschickt und ungefähr so, wie ein kleines UI-Element aussieht:

source PNG        1,805 bytes
lossless WebP       146 bytes    pixel-for-pixel identical
lossy WebP q80      264 bytes    mean error 5.5 per channel

Die verlustfreie Datei ist 80 % kleiner als die verlustbehaftete und außerdem exakt. Beide Tatsachen haben den gleichen Grund: Das Bild hat überwiegend flache Farben und harte Kanten, was bei einem verlustfreien Encoder der beste Fall und bei einem verlustbehafteten fast der schlechteste Fall ist.

Diese Zahlen stammen aus der eigenen Testsuite dieses Repositorys, die das Bild bei jedem Commit codiert und es erneut mit einer anderen Bibliothek decodiert, um die überlebenden Pixel zu überprüfen.

So entscheiden Sie, ohne zu raten

Probieren Sie beide aus und vergleichen Sie. Es dauert eine Sekunde, kostet nichts und ist zuverlässiger als jede Faustregel – einschließlich der dieser Seite.

Wenn dies nicht gelingt, stellen Sie eine Frage: Hat dieses Bild große Flächen mit genau derselben Farbe oder scharfe Kanten zwischen den Farben? Wenn ja, beginnen Sie mit verlustfrei. Wenn es sich um ein Foto handelt, beginnen Sie mit der verlustbehafteten Qualität bei etwa 80 und erhöhen Sie die Qualität erst, wenn Sie in voller Größe einen Unterschied erkennen können.

Was sich daran nichts ändert

Die Wahl der Komprimierung hat keinen Einfluss auf die Bildabmessungen und eine Größenänderung ist fast immer die größere Einsparung. Ein 4000 Pixel breites Foto, das in einer 600-Pixel-Spalte angezeigt wird, verschwendet weit mehr Bytes, als jede Encoder-Einstellung wiederherstellen kann – skalieren Sie es zuerst und wählen Sie dann ein Format aus.

Metadaten sind eine dritte, separate Ebene. Ein Bildmetadaten-Entferner kann beschreibende PNG-Blöcke oder JPEG-Anwendungssegmente weglassen, ohne die Abmessungen oder die codierte Bildnutzlast zu ändern. Das ist nützlich für die Privatsphäre und die Provenienzhygiene, konkurriert aber selten mit der Größenänderung oder fotografischen Komprimierung als Größenverringerung.

Fragen

Sollte ich dann einfach immer verlustfrei verwenden?

Nein. Bei Fotos ist der Verlust deutlich geringer – oft um das Fünf- bis Zehnfache – und bei vernünftigen Qualitätseinstellungen ist der Verlust kaum zu erkennen. Die Regel bezieht sich auf den Inhalt: Fotos lassen sich gut verlustfrei komprimieren, weil sie verrauscht und detailliert sind, und Screenshots lassen sich gut verlustfrei komprimieren, weil sie flach und repetitiv sind.

Warum wurde mein kleines Bild größer, als ich es konvertierte?

Denn jedes Format hat feste Header-Kosten und unterhalb einiger hundert Bytes dominiert dieser Overhead alles, was der Kompressor speichert. Ein in WebP konvertiertes Einzelpixel-PNG kann einfach deshalb größer ausfallen, weil der RIFF-Container mehr kostet als die Pixeldaten. Das ist normal und deshalb sollte ein Konverter die tatsächlich gemessene Richtung angeben und nicht von einer Einsparung ausgehen.

Bedeutet verlustfrei, dass die Datei identisch ist?

Das bedeutet, dass die *Pixel* identisch sind, nicht die Bytes. Ein aus einem PNG erstelltes verlustfreies WebP ist eine völlig andere Datei, die in genau das gleiche Bild dekodiert – jeder Kanal jedes Pixels stimmt mit dem Original überein. Das ist eine prüfbare Eigenschaft, und es lohnt sich, sie zu testen.

Passende Werkzeuge

Quellen