Notizen vom Team zu Handwerk, Formaten und den kleinen Entscheidungen hinter einem guten runden Zuschnitt.
Der verlustfreie Container, was PNG speichert
PNG stützt sich auf DEFLATE, einen verlustfreien Algorithmus. Es schreibt die RGBA-Werte jedes Pixels exakt heraus, lässt zuerst einen umkehrbaren Filter über jede Bildzeile laufen und presst dann das Ganze mit einem zlib-artigen Strom. Verlustfrei heißt hier, dass die Werte, die du entpackst, Byte für Byte jene sind, die du hineingegeben hast. Im Fall JPG zu PNG sind die hineingehenden Werte die Pixel, die der Browser nach dem Dekodieren des JPEG zurückreicht, und die tragen bereits jede Näherung, die die ursprüngliche JPEG-Kodierung einführte. Also hält PNG pflichtbewusst die Näherungen fest, nicht die reale Szene, die fotografiert wurde. Gemessen landet ein 17 KB großes JPEG bei 1024x768 nahe 105 KB als PNG, während ein 116 KB großes JPEG bei 3840x2160 etwa 384 KB erreicht. Die Faktoren folgen der Auflösung statt der JPEG-Qualitätseinstellung, weshalb sie über Inhalte hinweg ungefähr stabil bleiben. Der Container verdient sich seinen Platz, indem er den Niedergang anhält, nicht indem er ihn umkehrt.
Warum JPEG-Qualität nicht wiederherstellbar ist
JPEG gibt Information für immer ab. Sein Kodierer führt eine Kosinustransformation über 8x8-Blöcke aus, rundet die Frequenzkoeffizienten auf eine gröbere Menge ab und speichert diese gerundeten Zahlen. Diese Rundung geht nur in eine Richtung, also kann ein Koeffizient, der vor dem Einrasten auf 50 noch 47 las, nie zurückgeschoben werden, und die Datei behält keine Erinnerung an die 47. Das Dekodieren des JPEG baut Pixel aus den gerundeten Koeffizienten wieder auf, die Vermutungen über die Originale sind. Hüll diese Vermutungen in PNG und du erhältst eine makellose Kopie eines fehlerhaften Bildes. Nichts davon ist ein Mangel von PNG oder von Araluma, es ist einfach, wie verlustbehaftete Kompression arbeitet, wobei alles, was zur Kodierzeit fällt, gefallen bleibt. Der einzige Weg zu besserer JPEG-Qualität ist, zur unkomprimierten Quelle oder zur RAW-Datei zurückzukehren.
Gemessenes Wachstum der Dateigröße
Wie stark ein JPG auf dem Weg zum PNG anschwillt, hängt vom Bild ab, doch der Trend ist beständig. Geschäftige Fotos mit reichen Tonwechseln wachsen am meisten, weil das genau das Material ist, das JPEG hervorragend komprimiert, während PNGs verlustfreier Kodierer bei solch verrauschten Pixeln nicht mithalten kann. Aus den eigenen Tests dieses Tools wird ein 17 KB großes JPEG-Foto bei 1024x768 zu einem 105 KB großen PNG, etwa das Sechsfache, und ein 116 KB großes JPEG-Foto bei 3840x2160 zu einem 384 KB großen PNG, rund 3,3-mal größer. Flaches Material wie Screenshots und Symbole passt von vornherein schlecht zu JPEG und trägt dort tendenziell mehr Gewicht, also wächst sein PNG weniger scharf. Die Lehre ist klar, wenn du eine kleinere Ausgabe jagst, schiebt dich ein JPG zu PNG in die falsche Richtung.
Transparenz, die Fähigkeit gegenüber dem Inhalt
PNGs 8-Bit-Alphakanal ist ein Merkmal des Containers und lässt jeden Pixel eine Deckkraft von 0 für völlig klar bis 255 für völlig deckend tragen. Wenn ein JPG über die Bild-Engine der Plattform als PNG neu aufgebaut wird, kommt jeder Pixel bei 255 heraus, voll deckend, weil das JPG von vornherein keine Transparenz weiterzureichen hatte. Das PNG steht bereit, Alphadaten zu speichern, die Datei hält nur keine, da im Quellmaterial keine existierte. Transparenz ins Bild zu bringen verlangt einen separaten Vorgang, entweder den Hintergrund von Hand in einem Editor zu maskieren oder einen automatischen Hintergrund-Entferner laufen zu lassen. Ein Entferner, der darauf abgestimmt ist, das Motiv zu erkennen, kann ein PNG mit echtem Alpha liefern, indem er die Deckkraft der Hintergrundpixel nach der Umwandlung auf null setzt.
Umgang mit EXIF-Metadaten
Beim Neuaufbau der Datei fallen ihre EXIF-, IPTC- und XMP-Tags vom PNG ab, in jedem Browser, und nehmen GPS-Koordinaten, den Kamerakörper, das Aufnahmedatum, Copyright-Text und jegliches eigene XMP, das das JPG hielt, mit. Farbprofile weichen ein wenig ab. Chrome und Safari behalten das sRGB-Tag an dem, was herauskommt, während Firefox es mit allem anderen ziehen lässt. So ist das PNG sRGB-sicher, wo immer du es öffnest, doch ein Wide-Gamut-Profil wie Display-P3 oder Adobe RGB übersteht Firefox nicht. Für gewöhnliches Web und Teilen ist das Ablegen der Tags ein Plus, es schält ein wenig Gewicht ab und entfernt Standortdaten aus deinen Fotos. Für professionelle oder archivarische Arbeit, die ihre eingebetteten Metadaten halten muss, verwalte diese Kette mit einem zweckgebauten Tool, bevor oder nachdem du umwandelst.
Datenschutz und wo die Arbeit landet
Wo die Arbeit landet, hängt von der Menge ab. Bei einem einzelnen Bild verlässt nichts den Browser, und du kannst es in Sekunden live prüfen. Öffne die Chrome DevTools, wechsle zum Netzwerk-Panel, filtere nach XHR und Fetch und wandle eine Datei um. Während der Kodierung erscheint nichts. Bei zwei oder mehr schickt Araluma sie an unseren Server, der umwandelt, das Ergebnis bündelt und einen Download-Link zurückgibt. Dieser Link und die umgewandelten Dateien werden in etwa 2 Stunden gelöscht. Der Weg für ein einzelnes Bild hält alles auf dem Gerät, abseits des Netzes, während ein Stapel das gegen das Erledigen vieler Dateien auf einmal tauscht. Beim Screenshot von etwas Privatem oder einem Foto mit deinem Standort hält das einzelne Umwandeln es auf deiner Maschine, ein echter Unterschied, kein Slogan.