jpgbilder verkleinern

oyster-manu

oyster-manu

toast
ich habe einen ordner voll mit bildern die alle "italien[1-1000].jpg" heissen.
da sie mit einer digitalkamera aufgenommen wurden sind alle sehr groß.
nun möchte ich aber alle bilder auf eine auflösung von 640*480 pixeln bringen und das möglichst automatisch.

mein problem ist, dass ich nicht viel ahnung von shellscripten habe, hat also jemand einen lösungsansatz?
 
ohh vielen dank. in zukunft sollte ich wohl doch mal erst die suchfunktion benutzen.
 
ich habe mir nun dieses script zusammengeschustert:

Code:
#!/bin/sh

echo "---START RESIZING---"
echo "this may take some time"

for i in *.jpg
do
convert $i -geometry 640x480\! ~/klein_pics/`basename $i .jpg`_klein.jpg
done

echo "---RESIZING FINISHED---"

allerdings habe ich noch ein paar fragen dazu.

1. geht die shell erst das verzeichnis nach *.jpg-dateien durch und merkt sich dann deren anzahl oder wird erst eine jpg-datei erfasst und dann die do-funktion ausgeführt usw.? bei letzterem müsste es doch dann vorkommen, dass das script eine endlosschleife wird falls man die veränderten jpg-dateien im selben ordner wie die ausgangs jpg-dateien speichern lässt, da immer neue jpg-dateien hinzukommen.

2. wofür steht das "\!"? in dem artikel (s.o.) stand was von maskieren. was heisst das?

3. warum muss basename $i.jpg angegeben werden? reicht nicht basename $i aus?
so wie es da steht müsste doch die endgültige datei so heissen: "bild001.jpg_klein.jpg"
tatsächlich heissen sie aber "bild001_klein.jpg"
 
das 1. wird wohl schon so sein dass es keine endlosschleife gibt, also zuerst einlesen und dann verarbeiten
2. ?
3. dass basename wird wegen den ` ja zuerst ausgeführt und laut man basename wird eine angehängter suffix gelöscht also das jpg wird weggelöscht durch das basename, der rest des namen bleibt erhalt und wird durch _klein.jpg ergänzt
 
vielen dank für deine antwort. ich war schon kurz davor einen neuen thread anzufangen weil keiner geantwortet hat (es passte auch nicht zum topic).

bei frage 2 meinte ich das "\!" hinter dem -geometry 640x480

convert $i -geometry 640x480\! ~/klein_pics/`basename $i .jpg`_klein.jpg
 
ich habe beim 2 ein Fragezeichen gemacht weil ich die Antwort nicht wusste, nicht weil die Frage schlecht gestellt war.
Ich habe den Artikel nochmals gelesen und denke da ist die Lösung
Ein Bild in der Ausgangsgröße 320x200 wird mit -geometry 640x480 daher auf 640x400 skaliert. Das Seitenverhältnis bleibt gleich, und 80 Pixel bleiben gewissermaßen "übrig". Soll die volle Fläche ausgenutzt werden (um den Preis, dass das Bild verzerrt wird), verwenden Sie -geometry 640x480! (mit einem Ausrufezeichen dahinter).
Das ! ist da damit das Bild wirklich diese Grösse annimmt, mit evtl verzerrungen. Ohne ! wird dass Bild auf den einten Wert skaliert.
 
danke.
weisst du auch warum das ! erst maskiert werden musste (per \) ?
 
vermutlich weil in der shell programmierung das ! eine negation darstellt.
 

Ähnliche Themen

Samba - Konfiguration

Bilder in Unterordner verkleinern

Terminal Server Client behält die eingestellten Verbindungen nicht

Heimserver Konfiguration für Ubuntu Server?!

Kopieren von Dateien per Shell

Zurück
Oben