Bilder verkleinern mit convert (imagemagick)

Wenn man im Internet eine Fotogalerie publizeren will, oder man viele Fotos per E-Mail verschicken will, sollte man die Fotos verkleinern. Ich habe mir ein Skript geschrieben, welches die Auflösung der Bilder verkleinert und die JPEG-Qualitätsstufe heruntersetzt. Somit kann man ganz schnell viele Bilder verkleinern.

Mit dem Befehl convert kann ein Bild verkleinert werden. Hierzu muss das Paket imagemagick installiert sein.

convert -resize 2048x2048 -quality 60 bild.jpg klein.jpg

Man sieht gut, wie sich die Dateigrösse verändert:

emanuel@discordia:/tmp
$ du -h bild.jpg klein.jpg
1.5M    bild.jpg
168K    klein.jpg

Die Datei wurde durch diesen Vorgang um 90% kleiner.

Um mehrere Bilder in einem Verzeichnis zu verkleinern, habe ich mir ein Skript geschrieben. Dieses Skript erstellt den Unterordner small, verkleinert alle Bilder und gibt aus, wie viele Fotos bereits verkleinert wurden.

#!/bin/bash
########################################################################
#
# imageshrink
# Verkleinert alle Bilder im aktuellen Verzeichnis
#
# Copyright 2010 Emanuel Duss
# Licensed under GNU General Public License
#
# 2009-10-09; Emanuel Duss; Erste Version
# 2010-12-12; Emanuel Duss; Optionen als Variabeln
#
########################################################################

########################################################################
# Variabeln
COUNT=0
TOTAL=`echo *.[Jj][Pp][Gg] | wc -w`

# Optionen
FOLDER="small"
SIZE="2048x2048"
QUALITY="60"

########################################################################
# Main

mkdir $FOLDER

for datei in *.[Jj][Pp][Gg]
do
  COUNT=`expr $COUNT + 1`
  echo $datei: Foto $COUNT von $TOTAL \(`expr 100 \* $COUNT / $TOTAL`%\)
  convert -resize $SIZE -quality $QUALITY "$datei" "$FOLDER/$datei"
done

# EOF

Die Auflösung und die JPEG-Qualitätsstufe kann in den Variabeln angepasst werden.

14 thoughts on “Bilder verkleinern mit convert (imagemagick)”

  1. Vielen dank! Funktioniert echt toll!

    Als Suse-Newbie:
    Text in eine Datei in “gedit” kopieren, und dann in der Shell mit “sh DATEINAME” ausführen. Man braucht nur das Script in den Ordner kopieren, wo die Fotos drin sind.

    Reply
  2. Bin zufällig auf dein Script gestossen und es macht genau, was ich mir gewünscht habe. Vielen Dank!

    Reply
  3. Hallo und Vielen Dank!

    Kleine Korrektur

    alt:
    convert -resize $SIZE -quality $QUALITY “$datei” “small/$datei”

    neu:
    convert -resize $SIZE -quality $QUALITY “$datei” “$FOLDER/$datei”

    Dann klappt es auch mit anderen Ordnern …

    Reply

Leave a Comment