Why you should not use PNG files for image sequences

Ok, natürlich war mir klar, daß das PNG-Format nicht gerade optimal komprimiert. Ich habe es aber ungeachtet dessen trotzdem verwendet, um Einzel-Frames oder auch ganze Sequenzen von Bildern zu rendern. Nun habe ich gestern abend im Blender-Meetup eine Hinweis auf den Artikel „Why you should not use PNG files for image sequences“ entdeckt und ihn mir durchgelesen. Darin ist die Rede davon, daß als PNG gerenderte Bild-Sequenzen bis zu 20 mal (!) langsamer rendern als TIFFs oder EXRs. Das ist natürlich schon ein Argument, weshalb ich jetzt auf TIFF umgestellt habe, das es auch mit optionaler LZW-Kompression (LZW steht für Lempel-Ziv-Welch) gibt.

LZW-Kompression

In der Online-Ausgabe der „Encyclopedia of Graphics File Formats“ von Murray/van Ryper habe ich einen längeren Artikel zur LZW-Kompression entdeckt. Dieser verlustfreie Kompressions-Algorithmus – „LZW“ steht dabei für Lempel-Ziv-Welch – wurde ursprünglich von Jacob Ziv und Abraham Lempel entwickelt und später von Terry Welch modifiziert. Dieser patentgeschützte Algorithmus war ein Grund für die Entwicklung des PNG-Formats.

Weiterführender Link: Eine ausführliche Geschichte des PNG-Formats (gesprochen: ping!).

PNG8 und PNG24

PNG-Logo. © Copyright 2020 by Claus Cyrny. Nach einem Entwurf von Oliver Fromme.

Voriges Jahr bin ich beim Surfen auf eine Berliner Website gestoßen, in der jemand – der Kontext waren Grafikformate fürs Web – den Begriff PNG24 benutzt und den Eindruck erweckt hat, als ob PNG lediglich 24-bit unterstützen würde, was ja nicht stimmt. Nun habe ich heute auf der PNG Homepage in der FAQ einen Artikel entdeckt, der das Mysterium aufklärt.

Weiterführender Link: Mein Beitrag „PNG-Unterformate“.

PNG und JPG

PNG-Logo © Copyright 2020 by Greg Roelofs. Mit freundlicher Genehmigung.

Aus reiner Bequemlichkeit lade ich nicht nur Screenshots, sondern auch Fotos überwiegend als PNGs hier ins Blog hoch. Dabei sind PNG-Dateien teilweise im Vergleich zu JPGs bis zu zehnmal (!) größer. Umgekehrt erlebe ich – wenn auch nicht bei mir – den Fall, daß Bilder, die besser als indiziertes PNG abgespeichert würden, als JPGs zur Verfügung stehen – ergo viel zu groß sind. Dahinter steckt wohl, daß die Betreffenden nicht genügend über diese beiden Formate wissen. Während das Gros der verfügbaren Grafikprogramme lediglich die gebräuchlichen Standard-Features des PNG-Formats unterstützt, bietet beispielsweise ImageMagick die Option an, auf die fünf Kompressionsfilter von PNG (none, sub, up, average und paeth) zuzugreifen, was – je nach Bilddaten – die Dateigröße nochmal verkleinern kann.

Die Features beider Formate in kurzer Übersicht:

JPEG:

Eignet sich aufgrund der verlustbehafteten Kompression am besten für Fotos. Max. Farbtiefe: 24 bit, das sind etwas über 16,7 Millionen Farben. Als JPG abgespeicherte Bilder können auch – optional – progressiv aufgebaut werden – ein Feature, das aber eher früher Sinn machte, als man/frau noch mit 56k-Modems im Internet unterwegs war. „Progressiv“ bedeutet, daß zuerst eine niedrig-auflösende Version aufgebaut wird, bis das Bild vollständig geladen ist. In JPG-Dateien können auch Text-Kommentare wie Copyright-Vermerke oder auch verwendete Software abgespeichert werden. Ebenfalls unterstützt wird das sogenannte sub-sampling, bei dem das Bild in Blöcke zu je vier Pixeln aufgeteilt wird. Bei einem sub-sampling von 4:4:4 wird die gesamte Bildinformation gespeichert, bei 4:2:2 und 4:1:1 wird, soviel ich weiß, die Helligkeitskomponente voll abgespeichert, während für die Farbinfomationen für jeden Viererblock ein Durchschnittswert gebildet wird.

PNG:

PNG (Portable Network Graphics; gesprochen: ping) unterstützt max. 64 bit – d. h. insgesamt 18,45 Trillionen (!) Farben – RGBA, was auf normalen Monitoren gar nicht mehr darstellbar ist, und eignet sich eher für Bilder mit größeren Farbflächen, z. B. Screenshots oder Logos. Die Kompression erfolgt verlustfrei mit einem LZ77-Algorithmus. Wie weiter oben bereits erwähnt, sind in PNG darüber hinaus fünf Kompressionsfilter implementiert. Ein Feature von PNG ist die Transparenz, wobei im Gegensatz zu GIF bei indizierten PNGs 256 Transparenzstufen unterstützt werden, während bei GIF ein Pixel entweder nur transparent oder nur deckend sein kann. Indizierte PNGs mit Farbpalette können besser als vergleichbare GIFs komprimieren; die Farbtiefe reicht hier von 256 Farben auf der einen bis zu zwei Farben auf der anderen Seite. Bei nicht-indizierten PNGs wird ein bis zu 16-bit großer Alpha-Kanal unterstützt.

Weiterführender Link:

Eine ausführliche Geschichte von PNG (englisch), zu finden auf der PNG Homepage.

Intuitives Arbeiten

Wie bei allem – so denke ich jedenfalls – kommt intuitives Arbeiten in erster Linie durch Übung. Ich mache jetzt ja schon seit mindestens 1996 Grafik; mit Webdesign bzw. HTML habe ich dann ein Jahr später angefangen. Da ich schon als Kind gemalt habe, war die Einarbeitung in Computergrafik für mich nicht schwer. Trotzdem bin ich – im Rückblick – erstaunt, wie mühelos ich 1996 den Einstieg in die Grafiksoftware gefunden habe, die ich – das war bei debis Systemhaus in Fellbach, wo ich Technische Dokumentation von Router-Netzwerken gemacht habe – damals benutzt habe. An Programmen hatte ich die damalige Version von Visio installiert; darüber hinaus hatte ich den „Designer“ von Micrografx, mit dem ich vor allem Präsentationsfolien erstellt habe, und zum Konvertieren von Visio in GIF – PNG gabe es damals noch nicht – hatte ich Paint Shop Pro, der 1996 noch von JASC entwickelt und vertrieben wurde.

Das Interface von Paint Shop Pro 6. © Copyright 1991 – 1999 by JASC Inc.

Um 1998 – ich benutzte damals noch Windows 95 – habe ich mir die Corel SelectEdition gekauft, zu der u. a. Corel PHOTO-PAINT gehörte, und – nachdem ich mir zu Lernzwecken eine Demo-Version des damaligen Photohshop installiert hatte – 2002 habe ich schließlich mit dem Gimp angefangen, den ich bis heute – und gern – benutze.

Ich würde hier zu gerne ein paar Sachen posten, die ich damals – besonders in meiner Windows-Zeit – gemacht habe, allerdings habe ich die betreffenden Disketten 2016, als ich nach Ludwigsburg umgezogen bin, weggeworfen (und welcher PC hat denn heute noch ein Diskettenlaufwerk?).

Eine Grafik habe ich noch im Internet Archive gefunden; es handelt sich dabei um ein Logo, das ich um 2002 für das auf Java basierende Projekt „Neurogrid“ entworfen habe:

Logo des Projekts „Neurogrid“. Design & © Copyright 2002 by Claus Cyrny. Alle Rechte vorbehalten.

Mehr zu diesem Projekt könnt ihr auch in folgendem Beitrag nachlesen.

11:21 Uhr

War gerade einkaufen und beim Trölsch frühstücken. Obwohl ich dort seit Jahren Stammkunde bin, sind die Bedienungen nicht besonders freundlich. Draußen die eine Bettlerin, wie ihre Kollegin auf der gegenüberliegenden Straßenseite mit nackten Füßen.

Habe – erst mal für mich – eine Übersicht über die von CinePaint unterstützten Dateiformate (ich zähle 23) geschrieben, bin aber noch nicht fertig. Neben den gebräuchlichen Formaten wie PNG, TIFF oder JPG sind auch Kodak Cineon bzw. DPX – was im Prinzip fast dasselbe ist – sowie FITS, ein Dateiformat, das von der NASA verwendet wird, darunter. Ich dachte eben, so eine Übersicht könnte für den einen oder anderen nützlich sein.