Bilder einer Ausstellung

Wer Bildmaterial ins Netz stellt, sollte Wert auf kurze Ladezeiten legen. Vor allem JPEG-Dateien lassen sich oft auf einen Bruchteil ihrer Größe zusammenstauchen, ohne dass die Qualität der Darstellung zu sehr leidet.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Michael Riepe

Das Web besteht schon lange nicht mehr nur aus (Hyper-)Text. Bilder haben die Bleiwüste von einst in eine elektronische Illustrierte verwandelt. Leider erhöhen sie auch die Ladezeiten einzelner Seiten – mitunter erheblich. Zwar verfügen viele Surfer über eine breitbandige Netzanbindung, doch die hilft wenig, wenn die Bits auf der Server-Seite durch einen engen Flaschenhals tröpfeln. Wer asymmetrisches DSL verwendet, muss sich beim Hochladen von Bildern auf den eigenen Server oder beim Versenden via E-Mail ebenfalls gedulden.

Viele Bilder besitzen eine fürs Web viel zu hohe Qualität. JPEG-Dateien aus Digitalkameras etwa sind oft nur minimal komprimiert. Fürs Online-Fotoalbum und die Wiedergabe am Bildschirm genügen jedoch normalerweise Bilddateien mit einer Qualität von 75, eventuell sogar weniger. Sie lassen sich zum Beispiel mit den Programmen cjpeg und djpeg erzeugen, die zum Lieferumfang der Bibliothek libjpeg gehören:

djpeg bild.jpg | cjpeg > bildneu.jpg 

wandelt die originale JPEG-Datei zunächst ins von pbmplus respektive netpbm bekannte PPM- oder PGM-Format um – Letzteres kommt bei Graustufen-Bildern zum Einsatz – und generiert daraus eine neue Datei. cjpeg erzeugt per Voreinstellung Dateien mit einer Qualität von 75, wer einen anderen Wert wünscht, kann ihn mit der Option –quality <Q> auf der Kommandozeile übergeben. Nutzer von ImageMagick können die Datei auch mit dem Kommando convert bild.jpg –quality <Q> bildneu.jpg „kleinrechnen“. mogrify –quality <Q> bild.jpg erfüllt denselben Zweck, überschreibt jedoch die Originaldatei.

Optimal fürs Web sind die so erzeugten Dateien jedoch noch nicht. Vor allem JPEG-Dateien mit hoher Auflösung sollten als „Progressive JPEG“ codiert sein. Solche Bilder bestehen aus mehreren „Lagen“ mit zunehmender Qualität. Der Browser kann mit dem Anzeigen beginnen, sobald die erste Lage eingetroffen ist, und die Details später hinzufügen. cjpeg erzeugt progressive JPEG-Dateien, wenn man beim Aufruf die Option –progressive übergibt. Außerdem bietet das Programm mit der Option –optimize die Möglichkeit, die Parameter der im JPEG-Format verwendeten Huffman-Entropiecodierung automatisch anzupassen, was die Dateigröße oft weiter reduziert. Allerdings dauert das Codieren etwas länger.

Aktuelle Versionen des libjpeg-Pakets enthalten das Programm jpegtran, mit dem sich beide Operationen nachträglich ohne Qualitätsverlust durchführen lassen. Mit der Option –copy none entfernt jpegtran außerdem alle überflüssigen Komponenten aus der Datei, etwa von der Kamera hinterlegte Exif-Metadaten (Exchangeable Image File Format) und Kommentare des Nutzers. Darüber hinaus kann das Programm JPEG-codierte Bilder ohne Qualitätsverlust spiegeln oder um ein Vielfaches von 90° drehen. Da jpegtran dazu die Eingabedatei nicht vollständig decodieren muss, arbeitet es schneller als die Kombination aus djpeg und cjpeg. Allerdings kann es die Qualitätsstufe nicht ändern.

Wer mehrere Bilder auf einmal umwandeln möchte, kann auf jpegoptim zurückgreifen. In der Standardeinstellung optimiert das Programm lediglich die Huffman-Tabellen. Gibt man mit –m <Q> eine maximale Qualität vor, führt es bei Bedarf eine verlustbehaftete Kompression durch. Außerdem kann der Nutzer mit --strip-all alle Kommentare und Exif-Metadaten entfernen lassen. Benötigt das Resultat weniger Speicherplatz als das Original, ersetzt jpegoptim die Eingabedatei. Gibt der Anwender mit –d <verzeichnis> ein Zielverzeichnis an, schreibt das Programm die optimierten Versionen dorthin. Wer lediglich wissen will, ob ein Satz Dateien optimierungsbedürftig ist, kann mit der Option –n einen Testlauf durchführen. Leider erzeugt jpegoptim keine progressiven JPEG-Dateien, sodass man das Resultat mit jpegtran nachbearbeiten sollte.

Das seltener verwendete PNG-Format (Portable Network Graphics) bietet ebenfalls eine Reihe von Optimierungsmöglichkeiten. Der PNG-Kompressionsalgorithmus besteht im Wesentlichen aus drei Stufen: einem Filter, der die Daten in eine besser komprimierbare Form umrechnet, einem LZ77-Kompressor sowie einer Huffman-Codierung. Durch Reduzieren der Farbtiefe, Wählen eines anderen Filters oder Ändern der Parameter für die anderen Stufen lassen sich unter Umständen etwa kompaktere Dateien erzeugen. Allerdings gibt es dafür kein Patentrezept, sodass Tools wie pngcrush, optipng oder advpng nach der zeitaufwendigen Methode „Versuch und Irrtum“ vorgehen müssen.

Wer sich mit der Kommandozeile nicht anfreunden mag, findet in Trimage und ImageOptim grafische Oberflächen für Linux und Mac OS X, die sich der anderen Werkzeuge bedienen und sowohl JPEG- als auch PNG-Dateien optimieren können.

Alle Links: www.ix.de/ix1101140 (mr)