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.
Man sieht gut, wie sich die Dateigrösse verändert:
$ 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.
########################################################################
#
# 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.
Dankeschön, hat mir geholfen!
Das freut mich! 😉
Danke
Bitte! 😉
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.
Hallo Daniel
Bitte. Schön, dass es auf Anhieb funktionierte.
Gruss
Emanuel
Hallo Emanuel,
super, genau das was ich gesucht habe. Vielen Dank für Dein Script.
Grüße
Ralf
Hoi Ralf
Gern geschehen 🙂
Bin zufällig auf dein Script gestossen und es macht genau, was ich mir gewünscht habe. Vielen Dank!
Hallo Hugo
Das freut mich! 😉
Viel Spass & beste Grüsse,
Emanuel
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 …
Hallo 🙂
Bitte gern geschehen.
Oups, ja. Merci für den Hinweis. Ich habs angepasst.
Beste Grüsse,
Emanuel
Danke,
tut genau was es soll.