JPEGs aus Minimum runterdrücken

Auf Codeberg Pages kann man ja ganz toll Webseiten hosten, die einfach in einem Repository eingecheckt sind.
Für statischen HTML Kram ist das super, aber was macht man mit Bildern?

Um jetzt nicht alles unnötig aufzublähen, setzte ich mir ein Ziel:

Meine JPEGs müssen so klein wie möglich werden!


Als Entwickler wäre meine Antwort jetzt: libjpeg! Hier kann man die Kompressionstärke per jpeg_set_quality() auf einen Wert zwischen 0 und 100 Prozent setzen.

Doch da die öffentliche API im GATE-Framework nur 4-bit Kompressions-Stufen (also 16 Zustände) zulässt, müsste ich jetzt einen weiteren Finetuning Kanal nach außen legen, und deshalb soll das ganze einfacher funktionieren.

cjpeg kann auch Bilder komprimieren

Das Tool cjpeg hat bereits die erforderliche Funktionalität und kann wie folgt installiert werden:

1apt install libjpeg-progs

Es liest eine unkomprimierte Datei (zB. .bmp), komprimiert die Bilddaten im JPEG Format und gibt das Ergebnis auf der Konsole aus.

Der Aufruf

1cjpeg -quality 4 input.bmp > output.jpeg

lässt den Inhalt von input.bmp mit der Qualität von 4% auf die Konsole schreiben, welche im Beispiel in die Datei output.jpeg umgeleitet wird.

Auf diese Weise kann man sich schnell ein Script schreiben, das alle *.jpeg Dateien durchläuft, per djpeg als Bitmap speichert und diese dann mit der neuen Kompression wieder in eine JPEG verwandelt.

JPEG zu BMP und zu neuer JPEG konvertieren

1djpeg -bmp input.jpeg > temp.bmp
2cjpeg -quality 4 temp.bmp > output.jpeg

JPEG direkt konvertieren per Pipes

1djpeg input.jpeg | cjpeg -quality 4 > output.jpeg

Warum 4% ?

Ich konnte nun etwas experimentieren und stellte fest, dass man ab 3% Qualität auf meinen Fotos ein Minimum an Inhalt erkennen konnte. Bei kleineren Werten wird es wirklich unkenntlich und größere Werte schlagen sich sofort in jeder Menge zusätzlicher Bytes nieder.

Mit 4 % konnte ich so die 45 MB an Bild-Dateien auf etwa MB runterdrücken, womit ich auch mein git Repository mit besserem Gewissen belasten kann.

Vergleich von JPEG Bild-Qualitäten

Original Bild ~75% (167 KB)

Image

Qualität 10% (26 KB)

Image

Qualität 8% (23 KB)

Image

Qualität 6% (19 KB)

Image

Qualität 4% (15 KB)

Image

Qualität 2% (11 KB)

Image

Fazit

Die JPEG Tools sind schon eine feine Beilage und ermöglichen eine schnelle Konvertierung von Fotos.

Ich erinnere mich noch gut an jene Zeiten, als Webspace-Hoster ihre Upload-Größen auf wenige 100 KB reduzierten (um das Jahr 2000). Damals saß ich lange vor Tools wie WebGraphics-Optimizer um alle Bilder “kleiner” zu speichern.

cjpeg hätte mir da viel Klickarbeit abnehmen können.
Erst die Programmierung mit libjpeg hat mich mit dessen erweiterten Tools bekannt gemacht.

📧 📋 🐘 | 🔔
 

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!