Hallo, Am Thu, 01 Dec 2005, Dr. Jürgen Vollmer schrieb:
Am Donnerstag, 1. Dezember 2005 21:10 schrieb Martin Ereth:
Ich möchte mit einem Script Bilder verkleinern. Die größen Bilder liegen im Verzeichnis big/, die kleinen in small/. big/ und small/ liegen im gleichen Verzeichnis auf gleicher Ebene.
nun hab ich das script, das aus dem Verzeichnis, in dem big/ und small/ liegen, aufgerufen wird:
-- #!/bin/sh for file in big/*.jpg do
base=`basename "$file"`
convert $file -thumbnail '160x100>' "small/$file"
convert "$file" -thumbnail '160x100>' "small/$base"
done --
Beim Ausführen gibt es Fehler: convert: unable to open image small/big/{und dann das jeweilige Bild aus big/}
Was muss ich nun tun, damit das wie oben beschrieben geht?
Soweit richtig. Aber verlieren wir mal ein paar Worte _warum_: @Martin: Du nimmst 'for file in big/*.jpg'. Somit bekommst du _in_ der Schleife in "file" jew. den String "big/irgendwas.jpg". Dann haengst du beim 'convert' nur ein 'small' davor. convert wird also so aufgerufen: convert big/irgendwas.jpg -thumbnail '160x100>' "small/big/irgendwas.jpg" Und wenn du das siehst, solltest du die Fehlermeldung der shell verstehen. Juergen schlaegt nun folgendes vor (siehe 'man basename'): in jedem Schleifendurchlauf nimm "$file" (big/irgendwas.jpg, s.o.) setze base auf `basename "$file"` ### also irgendwas.jpg # rufe convert auf: convert "big/irgendwas.jpg" -thumbnail '160x100>' "small/irgendwas.jpg" ^^^^^^^^^^^^^^^^^$file, unveraendert ^^^^^^^^^^^^^$base ende der Schleife Das ganze kann man auch noch anders "formulieren", aber praktisch ist das das, was du wohl wolltest. Achso: wenn du vor der Schleife das Verzeichnis 'small/big' erzeugst funktioniert alles, die Thumnails liegen dann eben alle als small/big/*.jpg vor... Fazit: les mal eine Einfuehrung zur shell-Programmierung, z.B. die von SelfLinux: http://www.selflinux.org/selflinux/html/shellprogrammierung.html Es lohnt sich!!! Anschliessend kannst du z.B. mal auf Linuxdoc.org kruschteln... und die diversen HOWTOS und die anderen Dokumente zur Bash z.B. lesen. 'man bash' solltest du obendrein immer zur Hand haben, und sei es nur als (das Verstaendnis foerdernder) Vergleich... -dnh -- Sehr gehrter Damen und Herren, ich bitte, auf weitere Zusendungen bez. "newsgroups" zu verzichten [Ernst-Ludwig Becker in dnq]