Archiv verlassen und diese Seite im Standarddesign anzeigen : Bilder verkleinern
inner.glow
07-10-2003, 17:36
Hi!
Ich kenne mich mit shell-scripten nicht gut aus. Leider habe ich heute von einem Grafiker Bilder bekommen, die alle um den Faktor 0.2964 zu groß sind (sagt Gimp)!
Ich muss alle Bilder verkleinern. Das wäre am einfachsten mit einem Script...
Ich weis nur nicht, wie ich das anstellen könnte... Die einzige Sprache, die ich kann ist PHP
Gruß, fabian
peschmae
07-10-2003, 17:55
wie wärs mit einem Shellscript und irgend so nem Tool aus dem ImageMagick-Paket
damit machst du ne for-schleife, etwa so
for f in *.jpg; do
convert $f
done
welchen befehl du genau nehmen musst weiss ich nicht genau. Aber das Paket hat sicher was dazu (hab das glaubich auch schon mal gebraucht)
MfG Peschmä
inner.glow
08-10-2003, 17:42
Das ist schon mal ein ganz guter Tipp!
Ich kann mir folgende Vorgehensweise vorstellen:
Ändern jedes einzelnen Bildes mit
mogrify -geometry 30%x30%! *.jpg
Dann muss ich noch die verzeichnisse irgendwie rekursiv? durchlaufen...
Könnt ihr mir da vielleicht weiterhelfen
Gruß
Ach ja: Ich muss vor dem ändern der Bilder, den Schreibschutz ändern, der Bei der Kopie von cd entsteht. wie??
peschmae
08-10-2003, 18:09
Original geschrieben von inner.glow
Das ist schon mal ein ganz guter Tipp!
Ich kann mir folgende Vorgehensweise vorstellen:
Ändern jedes einzelnen Bildes mit
mogrify -geometry 30%x30%! *.jpg
Dann muss ich noch die verzeichnisse irgendwie rekursiv? durchlaufen...
Könnt ihr mir da vielleicht weiterhelfen
ah ja, mogrify hiess das teil ;)
versuchs mal so:
for f in `find -name "*.jpg"`; do
mogrify -geometry 30%x30%! $f
done
(Die lieben tollen Unix-Werkzeuge :D)
Ach ja: Ich muss vor dem ändern der Bilder, den Schreibschutz ändern, der Bei der Kopie von cd entsteht. wie??
Liegt das Zeugs denn auf ner Fat-Partition? Dann musst du beim mounten dir n bisserl Rechte zuschaufeln, etwa mit dem Parameter: umask=000
Unter Linux (mit Linux-Dateisystemen) gibts glaub ich keinen separaten Schreibschutz (d.h. schon, über die benutzerrechte)
die Benutzerrechte kannst du mit chmod ändern, etwa "chmod 755 img.jpg" (z.B. oben in der Schleife einfügen)
MfG Peschmä
inner.glow
08-10-2003, 19:32
Mit Schreibschutz meinte ich eigentlich die Schreib-Berechtigung für den Besitzer...
Das geht doch irgendwie mit chmod??
Hans-Georg Normann
09-10-2003, 00:21
Jo, 1=ausführen, 2=schreiben, 4=lesen. Die Summe daraus gibt die Berechtigung an. Die Berechtiung wird in der Reihenfolge User / Group / Other gesetzt.
Beispiel. User darf lesen, schreiben und ausführen, Gruppe soll mur lesen und ausführen können, Aandere sollen drußen bleiben, ergibt: chmod 750 dateiname
chmod gibts auch noch mit anderer Syntax, aber das konnte ich mir noch nie merken und hat auch noch weiter Optionen. siehe man chmod
peschmae
09-10-2003, 09:06
Original geschrieben von Hans-Georg Normann
chmod gibts auch noch mit anderer Syntax, aber das konnte ich mir noch nie merken
ich auch nicht :)
Da bin ich ja froh, dass ich nicht der einzige bin.
MfG Peschmä
inner.glow
09-10-2003, 19:03
So, ich hab' jetzt folgendes Script (u.a.):
for bild in `find -name "*.jpg"`; do
chmod 750 $bild
mogrify -geometry 29.61%x29.61%! $bild
echo "$bild verkleinert"
done
Nur ist jetzt folgendes: Die Dateinamen haben Leerzeichen und jetzt will das Programm nach jedem Leerzeichen eine neue Datei verändern:
./start seite/hintergrund.jpg
heisst eine (dei erste gefundene) Datei
Anfang der Fehlermeldungen:
chmod: konnte Attribute von »./start« nicht holen: Datei oder Verzeichnis nicht gefunden
mogrify: Unable to open file (./start) [No such file or directory].
mogrify: Missing an image file name [No such file or directory].
./start verkleinert
chmod: konnte Attribute von »seite/hintergrund.jpg« nicht holen: Datei oder Verzeichnis nicht gefunden
mogrify: Unable to open file (seite/hintergrund.jpg) [No such file or directory].
mogrify: Missing an image file name [No such file or directory].
seite/hintergrund.jpg verkleinert
Was tun??
peschmae
10-10-2003, 09:06
Original geschrieben von inner.glow
So, ich hab' jetzt folgendes Script (u.a.):
for bild in `find -name "*.jpg"`; do
chmod 750 $bild
mogrify -geometry 29.61%x29.61%! $bild
echo "$bild verkleinert"
done
Nur ist jetzt folgendes: Die Dateinamen haben Leerzeichen und jetzt will das Programm nach jedem Leerzeichen eine neue Datei verändern:
...
ich würds mit Anführungszeichen versuchen:
for b in `find -name "*.jpg"`; do
chmod 750 "$b"
mogrify -geometry 29.61%x29.61%! "$b"
echo "$bild verkleinert"
done
sollte gehen finde ich.
MfG Peschmä
Hans-Georg Normann
10-10-2003, 19:37
Original geschrieben von peschmae
for b in `find -name "*.jpg"`; do
chmod 750 "$b"
mogrify -geometry 29.61%x29.61%! "$b"
echo "$bild verkleinert"
done
Nicht doch! Mag zwar laufen, ist aber viel zu kompliziert.
versuch doch mal
cd /dein/verzeichnis
find . -iname "*.jpg" -exec chmod 750 {} \;
find . -iname "*.jpg" -exec mogrify -geometry 29.61%x29.61%! {} \;
{} liefert den gefundenen Dateinamen
-iname ignoriert Gross- und Kleinschreibung
Das Semikolon am Ende der Zeile muß maskiert werden, sonst wir es von der shell interpretiert. Man könnte das ganze auch noch auf einen Suchlauf beschränken.
Hans
inner.glow
10-10-2003, 20:00
Also, wenn ich das Programm ausführe kommen folgende Fehlermeldungen:
mogrify: Unable to open file (./start seite/hintergrund.mgk).
mogrify: Unable to open file (./seitei punching bags/start seite/start-seite-punching.mgk).
...
Ich weis zwar nicht, was das heisst, aber ich glaube, dass der Fehler daran liegt, dass ich die Dateien von CD kopiert hab'. Alle Verzeichnisse, unterverzeichnisse und Dateien sind Schreibgeschützt. Ich müsste also, wie ich glaube, den Schreibschutz aller Dateien und Ordner aufheben... aber wie??
Gruß, fabian
inner.glow
10-10-2003, 20:03
Zu früh gepostet, ich habs:
chmod -R 750 *
inner.glow
10-10-2003, 20:54
Es hat geklappt!!
Mit eurer Hilfe hab' ich mir einige Stunden Arbeit erspart. Danke.
Lösung:
#!/bin/bash
cd /mein/verzeichnis
chmod -R 750 *
find . -iname "*.jpg" -exec mogrify -geometry 29.61%x29.61%! {} \;
find . -iname "*.gif" -exec mogrify -format png {} \;
find . -iname "*.gif" -exec rm {} \;
find . -iname "*.png" -exec mogrify -geometry 29.61%x29.61%! {} \;
Gruß, Fabian
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.