Notizen vom Team zu Handwerk, Formaten und den kleinen Entscheidungen hinter einem guten Ergebnis.
Der verlustfreie Container, was PNG speichert
PNG nutzt den verlustfreien Kompressionsalgorithmus DEFLATE. Es speichert die RGBA-Werte jedes Pixels exakt so, wie sie geliefert werden, wendet auf jede Bildzeile einen umkehrbaren Filter an und komprimiert das Ergebnis mit einer zlib-Variante. Verlustfrei bedeutet, dass die dekomprimierten Pixelwerte byte-identisch mit den Originalen sind. Im Fall JPG zu PNG sind die Originale die Pixel, die entstehen, wenn der Browser das JPEG dekodiert. Diese dekodierten Pixel spiegeln bereits alle Näherungen wider, die JPEG bei seiner ursprünglichen Kodierung vornahm, also speichert PNG getreu die genäherten Pixel, nicht die reale Szene. Gemessen wird aus einem großen JPEG bei 1024x768 etwa als PNG, und ein großes JPEG bei 3840x2160 wächst auf rund . Diese Faktoren halten grob über Inhaltstypen hinweg, weil das Verhältnis der Auflösung folgt, nicht der JPEG-Qualitätsstufe. Der verlustfreie Container ist wertvoll für das, was er verhindert, weitere Verschlechterung, nicht für das, was er wiederherstellt.
Warum JPEG-Qualität nicht wiederherstellbar ist
JPEG-Kompression verwirft Informationen dauerhaft. Der Kodierungsvorgang wendet eine diskrete Kosinustransformation auf 8x8-Pixelblöcke an, quantisiert die entstehenden Frequenzkoeffizienten auf eine kleinere Menge und speichert diese quantisierten Werte. Der Quantisierungsschritt ist einseitig, denn ein Koeffizient, der 47 war und auf 50 gerundet wurde, kann später nicht auf 47 zurückgesetzt werden, und in der Datei überlebt keine Aufzeichnung des Originalwerts. Wenn der Browser das JPEG dekodiert, rekonstruiert er Pixel aus den quantisierten Koeffizienten, die Näherungen der Originalwerte sind. Eine Neukodierung dieser genäherten Pixel als PNG erzeugt eine verlustfreie Aufzeichnung der Näherungen, also ist das PNG eine perfekte Darstellung des verschlechterten Bildes. Das ist keine Einschränkung von PNG oder dieses Tools, es ist eine grundlegende Eigenschaft verlustbehafteter Kompression, bei der zur Kodierzeit verworfene Information verloren ist. Bessere JPEG-Qualität verlangt den Start vom unkomprimierten oder RAW-Original.
Gemessenes Wachstum der Dateigröße
Das Größenverhältnis von JPG zu PNG variiert je nach Bildinhalt, folgt aber einem vorhersehbaren Muster. Fotografische Bilder mit komplexer Tonwertabstufung wachsen am meisten, weil JPEGs Transformation genau auf solche Inhalte abgestimmt ist und hohe Kompressionsraten erreicht, während PNGs verlustfreier Kodierer diese Raten bei verrauschten Pixeldaten nicht erreichen kann. Testmessungen aus diesem Tool zeigen, dass ein großes JPEG-Foto bei 1024x768 ein großes PNG ergibt, rund das Sechsfache, und ein großes JPEG-Foto bei 3840x2160 ein großes PNG, rund das 3,3-Fache. Bei einfarbigen Bildern wie Screenshots und Symbolen ist JPEG ohnehin schlecht geeignet und seine Dateien werden bei gleicher Qualität tendenziell größer, also wächst das PNG desselben Inhalts weniger dramatisch. Die praktische Folge ist direkt, wenn die Ausgabegröße für deinen Anwendungsfall zählt, macht eine Umwandlung von JPG zu PNG die Lage schlechter, nicht besser.
Transparenz, die Fähigkeit gegenüber dem Inhalt
PNG unterstützt einen 8-Bit-Transparenz als Container-Funktion, bei der eine Datei pro Pixel Deckkraftwerte von 0 (voll transparent) bis 255 (voll deckend) enthalten kann. Wenn ein JPG durch die Bild-Engine der Plattform in ein PNG umgewandelt wird, wird das entstehende PNG voll deckend gesetzt, jeder Pixel bei einem Alphawert von 255, weil das Quell-JPG von vornherein keine Transparenzinformation hatte. Das PNG-Format ist bereit, Transparenzdaten zu halten, die Datei enthält sie nur nicht, weil im Quellmaterial keine vorhanden war. Transparenz zum Bild hinzuzufügen verlangt separate Verarbeitung, entweder das Maskieren des Hintergrunds in einem Editor oder einen automatischen Hintergrund-Entfernungsschritt. Ein Hintergrund-Entferner-Tool, das darauf trainiert ist, das Motiv zu erkennen, kann ein PNG mit echtem Alpha erzeugen, indem es nach der Umwandlung die Alphawerte der Hintergrundpixel auf null setzt.
Umgang mit EXIF-Metadaten
Die Neukodierungs-Pipeline entfernt EXIF-, IPTC- und XMP-Metadaten aus der PNG-Ausgabe in jedem Browser. Das bedeutet, dass GPS-Koordinaten, Kameramodell, Aufnahmedatum, Copyright-Texte und alle benutzerdefinierten XMP-Felder im Quell-JPG entfernt werden. ICC-Farbprofile folgen einem leicht anderen Pfad, wobei Chrome und Safari das sRGB-ICC-Profil-Tag in der Ausgabe bewahren und Firefox es zusammen mit allen anderen Metadaten entfernt. Das praktische Ergebnis ist eine sRGB-sichere Ausgabe über Browser hinweg, doch Wide-Gamut-Profile wie Display-P3 oder Adobe RGB gehen in Firefox verloren. Für die meisten Web- und Teilen-Zwecke ist das Entfernen von Metadaten hilfreich, denn es verringert die Ausgabegröße etwas und entfernt Standortdaten aus Fotos. Für professionelle Fotografie oder Archiv-Abläufe, bei denen eingebettete Metadaten erhalten bleiben müssen, behandle die Metadaten-Kette mit einem dedizierten Tool vor oder nach der Formatumwandlung.
Datenschutz in der Praxis
Wo die Umwandlung passiert, hängt von der Zahl der Dateien ab. Bei einem einzelnen Bild verlassen keine Daten den Browser, und das ist in Echtzeit überprüfbar. Das Netzwerk bleibt bei einer Einzel-Umwandlung inaktiv. Die Liste bleibt während der Kodierung leer. Bei zwei oder mehr Dateien schickt RoundCut sie an unseren Server, der umwandelt, das Ergebnis packt und einen Download-Link zurückgibt. Dieser Link und die umgewandelten Dateien werden in etwa 2 Stunden gelöscht. Der Einzelbild-Weg läuft vollständig auf deinem Gerät, abseits des Netzes, während der Stapel-Weg das gegen den Komfort tauscht, viele Dateien in einem Schritt umzuwandeln. Bei Bildern mit heiklem Inhalt, etwa dem Screenshot eines persönlichen Dokuments oder einem Foto mit Standortdaten, hält das einzelne Umwandeln alles lokal.