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

Skript um Verzeichnis mit Bildern zu skalieren.

moenk

Administrator
Teammitglied
Hab grad mal ein Verzeichnis mit Bilder unterschiedlicher Größe auf 1024x768 bringen wollen. Dabei hat mir dieses Skript und "ImageMagic" von der SuSE-CD geholfen.
Code:
#!/bin/bash
for pic in `ls -1 *.JPG`
do
convert -verbose $pic -scale 1024x768 $pic
done
Sehr schön auch dass die EXIF-Daten der Kamera erhalten bleiben!
 

Dakuan

Hacker
Sehr schön auch dass die EXIF-Daten der Kamera erhalten bleiben!
...und ich hab vor wenigen Wochen 2 Tage investiert um genau das Zeug wieder loszuwerden! In einem Forum hatte jemand von einem Vorschaubild für eine Bildergalerie berichtet, daß wiederum ein Vorschaubild in den EXIF Daten beinhaltet. Angeblich unter Gimp erstellt. Meine Gimp Bilder enthalten allerdings nur einen Kurzen Kommentar.
Ich habe festgestellt das viele Web Seiten jede Menge (bis zu 30%) Zusatzdaten enthalten. Nicht alles EXIF Daten. Adobe Photoshop z.B. hinterläßt sehr viel Schrott in .JPG Dateien (Farbprofile, Vorschaubilder. etc.). Die meisten anderen Programme (z.B. IrfanView) zeigen das nicht an.
Falls Interesse besteht, kann ich versuchen, die ursprüngliche Kommandozeilen Version (win) nach Linux zu portieren, dann kann sie bei Bedarf auch in Scripte eingebaut werden.
Dakuan
 

mada

Hacker
Hallo zusammen,

Hab grad mal ein Verzeichnis mit Bilder unterschiedlicher Größe auf 1024x768 bringen wollen. Dabei hat mir dieses Skript und "ImageMagic" von der SuSE-CD geholfen.
Code:

#!/bin/bash
for pic in `ls -1 *.JPG`
do
convert -verbose $pic -scale 1024x768 $pic
done

Es empfiehlt sich, die Groessenangabe auf 1024x1024 zu setzen! Ansonsten werden hochformatige Bilder viel viel kleiner als querformatige Bilder (768x5irgendwas). Man braucht keine Angst zu haben, die Bildseitenverhaeltnisse bleiben erhalten, beim skalieren wird lediglich die laengste Seite auf 1024 gesetzt!

lg, Daniel
 
... und soll es mal schneller gehen (weil viele dateien) führt ein

find . -name "*.[jJ][pP][gG]" -type f -maxdepth 1 -exec convert -verbose {} -scale 1024x1024 {} \;

zum Ziel
 

cero

Guru
Dakuan schrieb:
Falls Interesse besteht, kann ich versuchen, die ursprüngliche Kommandozeilen Version (win) nach Linux zu portieren, dann kann sie bei Bedarf auch in Scripte eingebaut werden.
Dakuan
Interesse hätte ich auf jeden Fall. Kann immer mal wichtig sein.
Nachher bekommt man noch Probleme, weil man z.B. ein Nummernschild
unkenntlich gemacht hat, dieses aber in der Vorschau noch zu erkennen
ist (z.B. bei Großaufnahmen)
Ich würde es dann auch gerne als Tipp mit ins Grafik-Forum aufnehmen.
 
da ich wie schon gesagt noch Linuxanfänger bin und bisher eigentlich gar nicht mit der Konsole gearbeitet hab (ist bei KDE ja nicht zwingend notwendig) würd ich mich freuen, wenn ihr mir einige Sachen des Skriptes kurz erläutern könntet:

Was hat es mit dieser Zeile auf sich:
"#!/bin/bash"?
Was bringt der befehl -verbose?

Warum "ls -1" und nicht "ls Pfadangabe"? was bedeutet der zusatz "-1" bei dem befehl ls?
 

TeXpert

Guru
jens_the_newbie schrieb:
da ich wie schon gesagt noch Linuxanfänger bin und bisher eigentlich gar nicht mit der Konsole gearbeitet hab (ist bei KDE ja nicht zwingend notwendig) würd ich mich freuen, wenn ihr mir einige Sachen des Skriptes kurz erläutern könntet:

was haben diese Fragen in diesem Thread zu suchen?

Was hat es mit dieser Zeile auf sich:
"#!/bin/bash"?
magic-Number -> man bash

Was bringt der befehl -verbose?
das ist kein Befehl sondern eine Option, man befehl hinter dem die Option steht

Warum "ls -1" und nicht "ls Pfadangabe"?
das ist hier an sich auch nicht nötig, ein ls reicht, generell fehlt hier in allen Scripten das saubere quoten

was bedeutet der zusatz "-1" bei dem befehl ls?
man ls
 
jens_the_newbie schrieb:
Was hat es mit dieser Zeile auf sich:
"#!/bin/bash"?
Lies hier:
http://www.bin-bash.de/scripts.php

Was bringt der befehl -verbose?
Einfach gesagt, wird ein Vorgang ziemlich geschwätzig. :D
Es werden ausführliche Ausgaben aktiviert.

Warum "ls -1" und nicht "ls Pfadangabe"? was bedeutet der zusatz "-1" bei dem befehl ls?
-1? Du meinst sicherlich -l (kleines L), oder?
ls listet die Attribute von Dateien und Verzeichnissen auf. -l gibt eine ausführlichere Liste aus.
Wenn du wirklich -1 meinst: hier wird pro Linie nur ein File aufgelistet.

Zwei Dinge hätten dir schneller geholfen:
1)
Code:
man ls
2) Google

Und schließlich: Warum machst du für deine Frage kein eigenes Thema auf? Bist du sicher, dass sie hier rein gehört?? :?
 

kobra

Member
Hallo,

möchte das Thema hier gern nochmal aufgreifen.
Hier steht ja nun geschrieben, wie ich Bilder eines Verzeichnisses verkleinern kann. Ich suche eine Möglichkeit, wie ich die Bilder mehrerer Verzeichnisse gleichzeitig verkleinern kann und diese dann wieder in den entsprechenden Verzeichnissen abgelegt werden. Leider habe ich nicht genügend Erfahrungen, dass Skript umzuschreiben.
Kenn jemand ein Programm, wo ich die Bilder ganzer Verzeichnis-Bäume minimieren kann oder kann mir evt. jemand das Skript erweitern?

Danke
Marcel
 

TeXpert

Guru
Griffin schrieb:
Warum "ls -1" und nicht "ls Pfadangabe"? was bedeutet der zusatz "-1" bei dem befehl ls?
-1? Du meinst sicherlich -l (kleines L), oder?
ls listet die Attribute von Dateien und Verzeichnissen auf. -l gibt eine ausführlichere Liste aus.
Wenn du wirklich -1 meinst: hier wird pro Linie nur ein File aufgelistet.
genau das (minu)(eins) ist gemeint, damit die Dateinamen einzeln über stdin gefüttert werden (hängt mit Sonderzeichen im Dateinamen zusammen) besser als eine For-Schleife ist allerdings bei schwierigen Filenamen ein while read Konstrukt, also:

Code:
#!/bin/bash
ls -1 *.jpg | while read pic;
do
convert -verbose $pic -scale 1024x768 $pic
done

@kobra: schau Dir die manpage von find an, jetzt baue mit den entsprechenden Optionen eine Verzeichnisliste auf und rufe das Script mit (cd $DIR && convertallpics) auf...
 
Oben