Hallo, mit "convert -scale 200x200 bild.jpg bild_klein.jpg" bekomme ich die Bilder von meiner Kamera auf Größen von 200x150 im Querformt oder 150x200 im Hochformat. Ich möchte nun die Bilder genau auf 200x200 bringen, das heißt entweder oben und unten 25 Pixel hinzufügen oder links und rechts. Das ist vergleichbar zu der Funktion Leinwandgröße in Gimp. man convert, convert -h und google haben mich nicht weiter gebracht. Kennt jemand eine Lösung? Gued gohn Joachim Tüns
Am Samstag, 24. September 2005 20:08 schrieb Joachim Tüns:
Hallo,
mit "convert -scale 200x200 bild.jpg bild_klein.jpg" bekomme ich die Bilder von meiner Kamera auf Größen von 200x150 im Querformt oder 150x200 im Hochformat.
Ich möchte nun die Bilder genau auf 200x200 bringen, das heißt entweder oben und unten 25 Pixel hinzufügen oder links und rechts. Das ist vergleichbar zu der Funktion Leinwandgröße in Gimp.
man convert, convert -h und google haben mich nicht weiter gebracht.
Kennt jemand eine Lösung?
Schau mal zu http://www.cit.gu.edu.au/~anthony/graphics/imagick6/ Ich mache das in einer ähnlichen Situation mit composite ungetestet: #Querformat convert "$FILE" -resize 200x miff:- 2>/dev/null | composite \ gravity center - -size 200x200 xc:black "$NEWFILE" Für die Unterscheidung Hoch- bzw. Querformat musst du selber nachsehen, ich mache das mit "if" im Bash-Script. Ich vermute aber, da gibt es auch was bei IM, nur kann man den Exif-Daten bzgl. Format nicht bei jeder Kamera trauen. Al
Hallo, Am Sun, 25 Sep 2005, Al Bogner schrieb:
Am Samstag, 24. September 2005 20:08 schrieb Joachim Tüns:
mit "convert -scale 200x200 bild.jpg bild_klein.jpg" bekomme ich die Bilder von meiner Kamera auf Größen von 200x150 im Querformt oder 150x200 im Hochformat.
Ich möchte nun die Bilder genau auf 200x200 bringen, das heißt entweder oben und unten 25 Pixel hinzufügen oder links und rechts. Das ist vergleichbar zu der Funktion Leinwandgröße in Gimp.
man convert, convert -h und google haben mich nicht weiter gebracht.
Kennt jemand eine Lösung?
Schau mal zu http://www.cit.gu.edu.au/~anthony/graphics/imagick6/
Ich mache das in einer ähnlichen Situation mit composite
ungetestet:
#Querformat convert "$FILE" -resize 200x miff:- 2>/dev/null | composite \ gravity center - -size 200x200 xc:black "$NEWFILE"
Geht noch einfacher und mit Hoch- und Querformat gleich: composite -gravity center -geometry 200x200 -size 200x200 \ "$INFILE" xc:black "$OUTFILE" Dabei ist wichtig, $INFILE vor xc:black zu haben (sonst setzt das ein schwarzes Quadrat von 200x200 in die Mitte ;) Also, um z.B. alle .jpg-Dateien in einem Verzeichnis so zu behandeln: newsize=200x200; \ for infile in *.jpg; do \ outfile="${infile//.jpg/-${newsize}.jpg}"; \ test -e "$outfile" && { \ echo "$outfile already exists"; \ continue; \ }; \ composite -gravity center -geometry ${newsize} -size ${newsize} \ "$infile" xc:black "$outfile"; \ done Wobei man sowas mit JPEG-Dateien ja lieber nicht machen sollte, die Kompressionsverluste addieren sich... Also nur ganz am Schluss wieder zu JPEG konvertieren. HTH, -dnh --
How would one crash packaging? Unexpected end-of-roll on /dev/bubblewrap System halted. -- A. D. Barratt, Tanuki
Hallo Al, hallo David, danke für eure Antworten. Am Sonntag, 25. September 2005 08:10 schrieb David Haller:
Am Sun, 25 Sep 2005, Al Bogner schrieb:
Am Samstag, 24. September 2005 20:08 schrieb Joachim Tüns:
mit "convert -scale 200x200 bild.jpg bild_klein.jpg" bekomme ich die Bilder von meiner Kamera auf Größen von 200x150 im Querformt oder 150x200 im Hochformat.
Ich möchte nun die Bilder genau auf 200x200 bringen, das heißt entweder oben und unten 25 Pixel hinzufügen oder links und rechts.
Ich habe jetzt noch eine andere Lösung gefunden: montage montage -quality 100 -geometry 200x200 quelle.jpg ziel.jpg Für die Ränder das Bild h.jpg nutzen: montage -quality 100 -texture h.jpg -geometry 200x200 quelle.jpg ziel.jpg Die Ränder einfärben (im Beispiel in rot): montage -quality 100 -background '#ff0000' -geometry 400x400 quelle.jpg ziel.jpg Das ganze für alle Bilder in einem Pfad und die neuen Bilder ins Unterverzeichnis abc schreiben: for i in *.jpg; do montage -background '#bae2be' -geometry 200x200 $i abc/${i}; done oder die Schleife etwas anders, wenn die Bildnamen Umlaute oder Leerzeichen enthalten: ls *.jpg | while read f; do montage -background '#bae2be' -geometry 200x200 "$f" "abc/${f}"; done und die neuen Bilder ins gleiche Verzeichnis schreiben: ls *.jpg | while read f; do montage -background '#bae2be' -geometry 200x200 "$f" "${f/.jpg/_neu.jpg}"; done Was ich gelernt habe? ImageMagick bietet viel mehr als convert :-)) Gued gohn Achim
participants (3)
-
Al Bogner
-
David Haller
-
Joachim Tüns