• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Tip] Bilder mit ImageMagick skalieren (Thumbnail erstellen)

cero

Guru
Bilder mit ImageMagick skalieren

Mit ImageMagik läßt sich auf der Konsole einiges machen.
Unter anderem kann ich ganz bequem einen Haufen Bilder
skalieren.

Ein einzelnes Bild skaliere ich wie folgt:
Code:
convert -resize 800x800 Bild.jpg Bild_klein.jpg
Ich habe absichtlich 800x800 eingegeben, damit das Seitenverhältnis
erhalten bleibt.
Wenn das ursprüngliche Bild z.B. eine Größe von 1024x768 hatte, wurde
es nun auf 800x600 skaliert.

Wer keine Lust hat mit Pixelangaben zu arbeiten, kann stattdessen
auch Prozentangaben verwenden:
Code:
convert -resize 50% Bild.jpg Bild_klein.jpg

Wenn ich aber eine Sammlung von 500 Bildern habe, möchte ich
diesen Befehl nicht für jedes Bild wieder aufrufen.
Wir können uns die Arbeit aber erleichtern. Dazu wechseln
wir in das Verzeichnis mit den Bilder und geben folgendes ein:
Code:
ls -1 *.jpg | while read file; 
do convert -resize 50% "$file" "`basename thumb_"$file"`"; 
done
Mit diesem Aufruf wird jedes JPG-Bild im Verzeichnis um 50%
verkleinert. Das verkleinerte Bild erhält einen Dateinamen
nach folgenden Schema: thumb_Bildname.jpg
Die ursprünglichen Dateien werden nicht verändert.
Falls euch thumb_ nicht gefällt, ändert es einfach.


Achtung:
Bevor ihr sowas macht, solltet ihr aber immer ein Backup der Bilder
machen. Es kann immer mal etwas schief gehen und dann wären die
Originale hin.


Danke an TeXpert für die Hinweise.
 

rethus

Advanced Hacker
Hi cero,
dachte das ich an dieser Stelle vielleicht auch eine Alternative erwähnen könnte, mit der ich sehr zufrieden bin.

Ich nuss selbst sehr viele Bilder Konvertieren, drehen komprimieren, skaliere uvm. (Tagewerk des Webmasters :lol: ).

Ich nutze dazu Kim, weil es bequem im KontextMenü des Konqueror aufzurufen ist, und sich auch auf mehrere Dateien anwenden lässt. Zudem fragt es selbstständig nah, ob die Datei überschrieben, oder eine Sicherheitskopie beibehalten werden soll.

Ich bin damit absolut zufrieden....
 

oc2pus

Ultimate Guru
rethus schrieb:
Ich nutze dazu Kim, weil es bequem im KontextMenü des Konqueror aufzurufen ist, und sich auch auf mehrere Dateien anwenden lässt. Zudem fragt es selbstständig nah, ob die Datei überschrieben, oder eine Sicherheitskopie beibehalten werden soll.

gibt es auch als RPMs:
http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/RPMS.suser-oc2pus/
http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/9.2-i386/RPMS.suser-oc2pus/
http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/9.3-i386/RPMS.suser-oc2pus/
http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/10.0-i386/RPMS.suser-oc2pus/
 

HaukeW

Member
Hallo!
Das Script funktioniert super, aber ich möchte es "andersherum" verändern - dass der vertikale Wert erhalten bleibt (also nicht alles auf "500xXXX" resizen, sondern auf "XXXx500"- wie mache ich das?

[edit] insbesondere verändert es hochkant- und querkant-Bilder gleich - also hochkantbilder werden zu XXX.500 verkleinert, Querkant zu 500xXXX - für meine homepage müssen sie aber alle gleich hoch sein.
 

TeXpert

Guru
siehe: http://www.imagemagick.org/script/command-line-options.php#resize

–resize widthxheight{%} {@} {!} {<} {>}

resize an image.

By default, the width and height are maximum values. That is, the image is expanded or contracted to fit the width and height value while maintaining the aspect ratio of the image. Append an exclamation point to the geometry to force the image size to exactly the size you specify. For example, if you specify 640x480! the image width is set to 640 pixels and height to 480.

If only the width is specified, the width assumes the value and the height is chosen to maintain the aspect ratio of the image. Similarly, if only the height is specified (e.g., –resize x256, the width is chosen to maintain the aspect ratio.

To specify a percentage width or height instead, append %. The image size is multiplied by the width and height percentages to obtain the final image dimensions. To increase the size of an image, use a value greater than 100 (e.g. 125%). To decrease an image's size, use a percentage less than 100.

Use @ to specify the maximum area in pixels of an image.

Use > to change the dimensions of the image only if its width or height exceeds the geometry specification. < resizes the image only if both of its dimensions are less than the geometry specification. For example, if you specify 640x480> and the image size is 256x256, the image size does not change. However, if the image is 512x512 or 1024x1024, it is resized to 480x480. Enclose the geometry specification in quotation marks to prevent the < or > from being interpreted by your shell as a file redirection.

If the –filter option precedes the –resize option, the image is resized with the specified filter.

If the –support option precedes the –resize option, the image is resized with the specified support.
 

Wild-Pako

Newbie
KIM ist ein sehr praktisches tool. Gefällt mir sehr.

So langsam hällt mich echt nicht mehr viel an windows (läuft auf meinem Haupt PC noch)
 
OP
C

cero

Guru
Einen weiteren Thread zum Thema Bilder skalieren gibt es hier:
http://www.linux-club.de/viewtopic.php?t=23819
 

apox

Member
Es gibt aber noch das Problem, dass auf diese Weise erstellte Thumbnails immer noch zu groß sind. Ich verwende folgenden Befehl:

Code:
convert bla.jpg -verbose -resize 150x110 -quality 80% thumbnails/bla.jpg

Die ursprünglichen Dateien haben ca. 500 kb, bei 1600x1200. Nach Anwendung des Befehls haben die Dateien noch ca. 60 kb:

Code:
bla.jpg=>thumbnails/bla.jpg JPEG 1600x1200=>147x110 147x110+0+0 8-bit DirectClass 59.4kb

Wenn ich dagegen z.B. in GIMP so ein Bild manuell auf 150x110 verkleinere und als JPG mit 80% Qualität abspeichere, hat die entsprechende Datei nur 7 kb!! Habe auch in folgender ausführlicher Dokumentation keinen Hinweis gefunden, wie man das Problem lösen könnte:
http://www.imagemagick.org/script/command-line-options.php

Sollte ja theoretisch kein Problem sein bei "heutigen" DSL-Geschwindigkeiten, aber wer wie ich auf dem Dorf lebt weiss, dass die Verfügbarkeit von zeitgemäßem DSL nicht überall gegeben ist (Danke Telekom!) ;)
 
Oben