
JPEGs aus Minimum runterdrücken
« | 10 Mar 2024 | »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
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)
Qualität 10% (26 KB)
Qualität 8% (23 KB)
Qualität 6% (19 KB)
Qualität 4% (15 KB)
Qualität 2% (11 KB)
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.