PNGs verkleinern mit pngcrush

Ich bin ja bekanntlich ein Riesenfan des PNG-Dateiformats. Zum einen liegt das an der vielgerühmten Alpha-Transparenz (die man auch im IE6 nutzen kann), zum anderen an meiner Lieblingsbildbearbeitung Fireworks (die PNG als Standardformat nutzt und dort auch Ebenen speichert).

Heute habe ich mich wieder einmal über die von Photoshop gespeicherten Farbprofilinformationen in meinen PNGs geärgert. Gut, man kann das vermutlich umgehen, indem man »Für Web speichern« anstelle des üblichen »Speichern unter« verwendet – aber wenn man in Eile ist, vergisst man diesen Menüeintrag mal schnell. Und so hat man fette PNGs mit allerlei Meta-Informationen, wie eben auch besagte Farbprofilinformation. Das wäre sicher kein Problem, wenn es da nicht so coole Browser wie Safari gäbe, die diese Information in PNGs tatsächlich unterstützen – wodurch es schlussendlich aber zu leichten Farbunterschieden kommt.

pngcrush to the rescue!

Da fiel mir ein nettes Kommandozeilentool ein, nämlich pngcrush, das ich während meiner Ausbildung etliche Male benutzt hatte. Was mir allerdings nicht mehr einfiel, waren die Parameter, um am Ende kleine, feine, farbprofilinformationsfreie (was ein Wort!) PNGs zu erhalten.

Nach einigem Hin und Her kann ich aber nun, hier und heute, die ultimative Befehlskette veröffentlichen, die aus Euren PNGs eben das macht, was ich oben sagte:

pngcrush -brute -reduce -rem alla -res 72 -q -d new-png old-png/*.png

(Unter der Voraussetzung, Ihr habt die bösen PNGs im Ordner »old-png« und wollt die guten Jungs im Ordner »new-png« haben.)

Diese Zeile hat mir bei knapp 45 Dateien immerhin stolze 100 kB eingespart! Aber Vorsicht, das funktioniert nur bei 8-Bit-PNGs. 24- oder gar 32-Bitter müssen anders gecrusht werden. Dazu aber demnächst was…