PNG: Universelle Bilder fürs Web

Optimierte Kompression

Der eigentlichen Komprimierung ist bei PNG eine Filterung vorgeschaltet. Nach der bisherigen PNG-Spezifikation existiert derzeit nur Filtermethode 0, die fünf Stufen umfasst. Die Filter erlauben es, Bilddateien auf eine für die Kompression besser geeignete Weise vorzubereiten.

Die Filterung ersetzt absolute Pixelwerte durch ihre Differenz zu einem ähnlichen Wert. Es entsteht somit ein Datenstrom, der viele ähnliche Werte enthält und sich wesentlich dichter komprimieren lässt. Die einzelnen Filter funktionieren wie folgt:

  • Beim Filter 0 (None) wird die Zeile unverändert an den Kompressionsalgorithmus übergeben.

  • Filter 1 (Sub) bezieht die Differenz jedes Pixels auf das entsprechende Vorgängerpixel und zwar pixelweise.

  • Filter 2 (Up) nutzt die Differenz mit dem Pixel in der darüber liegenden Zeile als Bezugspunkt.

  • Filter 3 (Average) berechnet die Differenz zum Mittelwert der Pixel links und oberhalb des aktuellen Pixels.

  • Der Filter 4 (Paeth) nutzt die Differenz zu einem der drei Punkte links, oberhalb oder links oberhalb eines Pixels. Eine einfache lineare Funktion - nach ihrem Erfinder PaethPredictor genannt - schätzt ab, welcher der drei Nachbarpunkte verwendet werden soll. Der PaethPredictor gibt den Punkt zurück, der dem berechneten Wert am nächsten liegt.

Um die bestmöglichen Ergebnisse zu erzielen, kann eine Filtervariation pro Bildzeile angewandt werden. Ein Filterindikator gibt die für die entsprechende Zeile geltende Filtervariation an. Der Indikator ist ein Byte mit einem Wert zwischen 0 und 4 und ist im IDAT-Block gespeichert.

Grafikprogramme, die mit PNG arbeiten, suchen den für das Bild am besten geeigneten Filteralgorithmus automatisch aus.