PNG-Grafiken optimieren

Als frei­er Ersatz für das mit Paten­ten beleg­te Gra­fik­for­mat GIF ist PNG ein moder­nes For­mat für Bil­der und Gra­fi­ken im Web. Im Gegen­satz zum JPEG-For­mat fin­det eine ver­lust­freie Kom­pres­si­on statt, die­se basiert auf dem von ZIP-Archi­ven bekann­ten Def­la­te-Algo­rith­mus. Prin­zi­pi­ell sind PNG-Bil­der also ganz ähn­lich zu ZIP-Datei­en aufgebaut. 

Um die hohe Kom­pres­si­on mög­lich zu machen, wel­che in der Regel deut­lich bes­ser als die von GIF-Datei­en ist, wer­den zusätz­lich Vor­fil­ter auf die Bild­da­ten ange­wen­det. Ers­te­re ist bei Web-Anwen­dun­gen beson­ders wich­tig. Wer eine viel fre­quen­tier­te Sei­te betreibt, dem wird jedes am Volu­men der Sei­te gespar­te Byte am Ende des Monats um ein viel­fa­ches in der Band­brei­ten­sta­tis­tik und damit der Rech­nung nie­der­schla­gen. Nicht zuletzt freut es den Besu­cher, wenn die Sei­te schnell lädt.

Genau so wie es auf dem Markt unzäh­li­ge ver­schie­de­ne und unter­schied­lich effek­ti­ve Rou­ti­nen zur Erstel­lung von ZIP-Archi­ven gibt, ist es durch geschick­te Opti­mie­rung mög­lich, PNG-Datei­en zu opti­mie­ren. Eini­ge Mög­lich­kei­ten wer­de ich im Fol­gen­den kurz vorstellen.

Eine der effek­tivs­ten, lei­der nicht ver­lust­frei­en, Metho­den ist das Redu­zie­ren der Farb­tie­fe. Denn, wer­den pro Pixel 24 bit für die Far­be bereit­ge­stellt, so wird die End­da­tei logi­scher­wei­se erheb­lich grö­ßer, als wenn nur 8 bit (256 Farb­stu­fen) zur Quan­ti­sie­rung bereit ste­hen. In der Pra­xis muss dies aber kei­ne mas­si­ve Beein­träch­ti­gung der Bild­qua­li­tät bedeu­ten. Ent­schei­dend ist, mit­hil­fe eines geschick­ten Algo­rith­mus die Quan­ti­sie­rungs­stu­fen so zu ver­tei­len, dass ein mög­lichst gerin­ger Gesamt­feh­ler ent­steht. Einer Tech­nik, die­sem Opti­mie­rungs­pro­blem Herr zu wer­den, bedient sich der von Antho­ny Dek­ker  beschrie­be­ne [1] neu­quant-Algo­rith­mus, wel­cher mit dem Prin­zip neu­ro­na­ler Net­ze arbei­tet. Stuart Coyle [2] nutzt dies, um eine eige­ne Fas­sung des Pro­gramms neu­quant (von Greg Roelf) zu ent­wi­ckeln, pngnq. Eine erneu­te maß­geb­li­che Ver­bes­se­rung steu­er­te der Pro­gram­mie­rer „por­nel“ bei, das Resul­tat ist das Tool „impro­ved pngnq“ [3].

Die Bedie­nung ist sim­pel. Per drag-and-drop die zu opti­mie­ren­den Datei­en auf die .bat Datei „Pro­cess — Palet­te redu­ce 64 NeuQuant.bat“ bzw. „Pro­cess — Palet­te redu­ce 256 NeuQuant.bat“ zie­hen. Das Resul­tat wird mit dem Zusatz „neu­qant“ im Datei­na­men abgespeichert.

Wie bereits erwähnt, gibt es aber noch wei­te­re Mög­lich­kei­ten die Datei­grö­ße wei­ter zu redu­zie­ren. Eine davon ist das Pro­gramm PNGOUT [4] von Ken Sil­ver­mann, auch bekannt als Ent­wick­ler der im Spiel Duke Nukem 3D ver­wen­de­ten Build engi­ne. PNGOUT bzw. das kom­mer­zi­el­le, mit gra­fi­scher Benut­zer­ober­flä­che und Mul­ti­Co­re-CPU-Unter­stüt­zung aus­ge­stat­te­te PNGOUT­Win [5] opti­mie­ren die Def­la­te-Kom­pres­si­on auf Basis von KZIP, eben­falls eine Ent­wick­lung von Ken Sil­ver­mann. Eine wei­te­re, nicht-kom­er­zi­el­le gra­phi­sche Ober­flä­che für PNGOUT stellt PNG­Ga­unt­let bereit [6].

Die Bear­bei­tung nimmt zwar eini­ge Minu­ten in Anspruch, so ist dies doch eine wert­vol­le Inves­ti­ti­on für Web­sei­ten mit hohem Besu­cher­auf­kom­men. Nach mei­nen Erfah­run­gen erreicht PNGOUT in der Regel eine Reduk­ti­on der Datei­grö­ße um 10–20%. Eine Men­ge, wenn man bedenkt, dass kei­ner­lei Infor­ma­ti­on ver­lo­ren geht und die Datei anschlie­ßend genau wie zuvor von Brow­sern und Anwen­dun­gen geöff­net und ver­ar­bei­tet wer­den kann.

Auch wenn dies eher aka­de­mi­scher Natur ist, selbst nach der Anwen­dung von PNGOUT – dem mei­ner Erfah­rung nach bes­ten Opti­mie­rer für PNG-Datei­en – las­sen sich noch eini­ge Bytes her­aus­pres­sen. Ursprüng­lich arbei­te­te Sam Allen an einem eige­nen ZIP-Pro­gramm. Die­ses Unter­fan­gen muss­te mit der Zeit auf­ge­ge­ben wer­den, doch stell­te er fest, dass er in sei­ner Def­la­te-Imple­men­ta­ti­on eini­ge Tricks ver­wen­de­te, „die kein ande­rer Mit­be­wer­ber hat­te“. Das hier­auf basie­ren­de Pro­gramm Defl­Opt [6] opti­miert jeg­li­che mit Def­la­te kom­pri­mier­ten Datei­en mit jenen „Tricks“ noch ein­mal ein wenig. Natür­lich kann die Soft­ware daher auch auf PNG-Datei­en ange­wen­det werden.

[1]: http://members.ozemail.com.au/~dekker/NEUQUANT.HTMLNequant-Algo­rith­mus beschrie­ben von Antho­ny Dekker

[2]: http://pngnq.sourceforge.net Stuart Coyle, pngnq

[3]: http://pornel.net/pngnq „por­nel“, impro­ved pngnq

[4]: http://advsys.net/ken/utils.htm Pro­gram­me, u.a. PNGOUT von Ken Silvermann

[5]: http://www.ardfry.com/pngoutwin/ PNGOUT­Win mit GUI und Batch-Verarbeitung

[6]: http://brh.numbera.com/software/pnggauntlet/ PNG­Ga­unt­let, Free­ware GUI für PNGOUT

[7] http://dotnetperls.com/deflopt Sam Allen, Deflopt

[8] http://de.wikipedia.org/wiki/PNG Wiki­pe­dia zu PNG


Beitrag veröffentlicht

in

von

Schlagwörter: