Lossless image optimization mit jpegoptim
Keine Frage: Traffic ist heutzutage bei den meisten Hostinganbietern als Flatrate inkludiert und die meisten Nutzer verfügen Zuhause über schnelles DSL oder Kabelinternet. Wieso also das Bedürfnis ein paar Kilobyte oder sogar nur wenige Bytes bei Grafiken und Bildern einzusparen? Der Grund ist einfach: Schnelligkeit. (Und weil es geht!) Zudem ist ein entscheidender Vorteil – die Aufmerksamen haben es schon gelesen – das keine Details in den Grafiken oder Fotos verloren gehen müssen, keine Artefakte oder sonstige Verluste entstehen. Stichwort: lossless.
Ich möchte zeigen wie man direkt auf dem eigenen Server oder Webspace ganze Verzeichnisse mit JPGs optimieren kann. Was du dazu benötigst: SSH auf deinen Server/Webspace und das Programm jpegoptim. Wenn jpegoptim nicht installiert ist, installiere es – unter Debian bspw. wie folgt:
$ apt update
$ apt install jpegoptim
Um eine einzelne Datei zu optimieren gibst du folgendes ein:
$ jpegoptim grafik.jpg
Wenn es erfolgreich gelaufen ist erhältst du eine ähnliche Ausgabe wie die folgende:
> grafik.jpg 150x150 24bit Exif ICC JFIF [OK] 41379 --> 27312 bytes (34.00%), optimized.
Es wurden also 34% Ersparnis ermöglicht. Ohne Verlust! Und ohne Metadaten zu entfernen.
Du kannst jpegoptim auch mit weiteren Optionen aufrufen um bspw. Metadaten (EXIF, IPTC, etc) zu entfernen. Alle Optionen findest du nach Eingabe von man jpegoptim
.
Jetzt aber zu unseren schlauen Zeile die alle JPGs innerhalb eines Ordners optimiert:
$ find /pfad -type f -name "*.jpg" -exec jpegoptim -p --strip-com --strip-iptc {} \;
Was passiert hier?
find
sucht mit dem Parameter -type f
und -name „*.jpg“
alle Dateien (f = files) die auf .jpg enden und übergibt sie an jpegoptim. Die Parameter von jpegoptim sind -p
. für die Beibehaltung des Zeitstempels der Originaldatei, --strip-com
entfernt Kommentare aus der Datei und --strip-iptc
entfernt IPTC Metadaten. Wenn du auch noch die EXIF-Daten entfernen willst, füge noch --strip-exif
hinzu.
Im eveosblog ließen sich mit jpegoptim bspw. knapp 260MB sparen – bei knapp 70.000 Bildern, wobei viele schon durch Photoshop einigermaßen optimiert waren und WordPress die generierten Thumbnails optimiert speichert.
Lossy-Optimisation / Optimierung mit Verlusten
Wenn du davon ausgehst, dass viele deine Dateien nicht Web-Optimiert gespeichert wurden (bspw. mit Photoshop), dann kannst du auch Grafiken mit höheren Qualitäten noch etwas drücken. Dafür gibt es den Parameter -m der einen Wertebereich von 0 bis 100 animmt. Die JPGs werden dann daraufhin geprüft ob die Qualität über dem Wert von m liegt und entsprechend auf den Wert angepasst. Die geschieht aber verlustbehaftet! Dateien die bereits die Qualität haben oder darunter liegen, werden nicht weiter dadurch beeinflusst und nur mit den lossless-Optionen optimiert.
Ein Aufruf mit dieser Option wäre wie folgt:
server:# find /pfad -type f -name "*.jpg" -exec jpegoptim -p -m72 --strip-com --strip-iptc {} \;
Ich habe keinen Server und möchte Bilder komprimieren!
Es gibt einige kostenlose Webtools wie bspw. Kraken.io oder auch imageoptim für OSX oder der geniale FileOptimizer für Windows.
Foto: Veri Ivanova / Unsplash