Ein Bild wird hiermit proportional auf eine Breite von 100 verkleinert:
convert -scale 100x grossesbild.jpg kleinesbild.jpg
Statt 100x kann man auch eine Prozentzahl angeben:
convert -scale 20% grossesbild.jpg kleinesbild.jpg
Beispiele um alle Bilder in einem Verzeichnis zu verkleinern:
for file in *; do convert -scale 100x $file klein_$file; done
for file in *.jpg; do convert -resize 20% $file `basename $file .jpg`_thumb.jpg; done
for i in `ls *.jpg` ; do convert -geometry 1024x1024 -quality 90 $i xga_$i ; done
Hier noch ein Skript, um Bilder recht komfortabel zu verkleinern:
#! /bin/bash subdir=scaled function err_text { while [ $# -gt 0 ] ; do echo "$1" 1>&2 # Ausgabe auf stderr shift done echo "`basename $0` [-ab -c Wert -d Wert] file" 1>&2 # Ausgabe auf stderr exit 1 } set -- `getopt "r:" "$@"` || err_text res=0 dir=~ while : ; do case "$1" in -r) shift; res=$1;; --) break;; esac shift [ $# -eq 0 ] && break # Fehler in den angegebenen Parametern done shift #Gültigen Pfad ermitteln bzw. abfragen if [ "$1" == "" ] ; then dir=`kdialog --getexistingdirectory "$dir" --caption "ScaleImage"` [ $? -eq 1 ] && exit else dir="$1" [ -d "$dir" ] || dir="${1%/*}" # Dateinamen vom Pfad abtrennen [ -d "$dir" ] || exit # kein gültiger Pfad fi # ggf. Auflösung setzen if [ $res -eq 0 ]; then res=`kdialog --title "ScaleImage" --inputbox "Maximale Bildabmessung in Pixel" "500"` [ $? -eq 1 ] && res=500 fi if [ -f "$1" ] ; then echo "Scaliere $1 auf eine maximale Größe von $res Pixeln" convert -scale "$res"x"$res" "$1" "$dir/scaled/${1##*/}" else echo "Scaliere alle JPG-Bilder in $dir auf eine maximale Größe von $res Pixeln" cd "$dir" [ -d scaled ] || mkdir scaled for i in * ; do ext=`echo ${i##*.} | tr [:lower:] [:upper:]` if [ "$ext" == "JPG" ]; then echo "$i" convert -scale "$res"x"$res" "$i" scaled/"$i" fi done fi