seeseekey.net - Invictus Deus Ex Machina

Manchmal möchte man eine ganze Menge JPEG Dateien komprimieren und dies am liebsten auf der Konsole erledigen. Dabei hilft dieses kleine Bash Skript:

#!/bin/bash
for i in *.jpg; do convert -quality 50 $i $i; done

Damit werden alle JPEGs in dem entsprechenden Verzeichnis auf die Qualitätsstufe 50 komprimiert. Damit das funktioniert muss das Paket imagemagick installiert sein.

7 Kommentare

  1. Der Befehl convert bedingt natürlich, dass imagemagick installiert ist. 🙂

    ~jug

    Antworten

  2. Das Skript funktioniert bei mir nicht, weil es auf die rückständige Methode der Erkennung des Dateityps an Hand von Dateiendungen setzt. Müsste man aber mit dem Befehl „file“ irgendwie umbasteln können.

    Antworten

  3. Verbesserungen sind immer willkommen 🙂

    Antworten

  4. Stimmt, werde das gleich mal im Artikel erwähnen 🙂

    Antworten

  5. Für Batch-Abläufe stellt ImageMagick den Befehl *mogrify* zur Verfügung.
    Dies würde die oben angeführte Schleife überflüssig mach:

    mogrify -quality 50 *.jpg

    Antworten

  6. um jpg-Bilder zu verkleinern, ohne gleich die Qualität auf 50% zu reduzieren kann man “jpegoptim” installieren …

    find . -iname ‘*.jpg’ -exec jpegoptim –force {} \;

    Hier noch mein Blog-Beitrag zu dem Thema:
    -> http://suckup.de/blog/2010/07/26/webseiten-komprimieren/#Bilder_komprimieren

    Antworten

  7. jpegoptim habe ich rein zufällig gestern ausprobiert, mit dem Ergebnis, dass keine weitere (verlustlose) Kompression möglich ist wenn vorher schon mogrify an der Datei gearbeitet hat. 50 ist natürlich ein sehr agressiver Wert, der zu starker Artefaktbildung führt, weniger als 85 würde ich persönlich nicht nehmen. Wenn man sowieso schon eines der imagemagick Programme laufen lässt dann kann man gleich noch den paramater “-normalize” dran hängen. Bei meinem imagemagick unter Lucid scheint die Option aber greade kaputt zu sein.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.