PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bilder nach ISO sortieren und verschieben



fsanne
02.06.19, 17:02
Guten Tag.
Ich möchte alle Bilder eines Ordners, die mit ISO 3200 fotografiert wurden, in einen anderen verschieben, bzw. kopieren, um sie dort "zu entrauschen".
Normalerweise bekomme ich das Kopieren oder Verschieben in der Shell hin - ich habe das aber bisher nur mit Bildern gemacht, deren Dateinahmen ich mit jhead umbenannt hatte in das Aufnahmedatum.
Meine Frage: Kann ich mit JHEAD oder z.B. Exiftool auf den ISO-Tag der Exif zugreifen? Ich habe Angst, dass ich meine Exif-Dateien der Bilder vielleicht versehentlich umschreibe.
Gangbar wäre es vielleicht auch, an den Dateinamen ein Suffix wie -ISO3200 zu hängen, aber eben nur bei den Dateien, die auch tatsächlich mit ISO3200 fotografiert wurden.
Für Nachhilfe oder Hinweise wäre ich sehr dankbar.
Fritz

nopes
03.06.19, 15:21
Ich kenn JHEAD nicht, aber ich bin mit phatch (http://photobatch.wikidot.com/) zu frieden, nur so als einfache alternative...

strcat
03.06.19, 16:01
exiftool kann das doch wenn ich das richtig lese:
- https://gist.github.com/rjames86/33b9af12548adf091a26
- https://ninedegreesbelow.com/photography/exiftool-commands.html#rename
- https://danielhoherd.com/tech-notes/exiftool/
- https://www.mankier.com/1/exiftool

fsanne
03.06.19, 16:33
Danke Euch Beiden für die Hinweise.
@nopes - phatch habe ich vor Ewigkeiten mal ausprobiert, kann mich aber nicht daran erinnern, dass man nach ISO-Werten sortieren kann. Probiere ich aber noch aus.
@strcat - Danke für die vielen links. Beim Überfliegen habe ich auch nicht das gefunden, was ich mir so vorstelle.

Ich versuche, mir ein Shell-Script zu schreiben.. Soweit bin ich bisher gekommen:

#!/bin/bash
cd ~/Schreibtisch/Bildbearbeitung
isowert=$(exiftool -ISO)
mkdir -p ./ISO3200
for i in *.jpg
do
if "$isowert"="3200"
echo Bild "$i" hat ISO "$isowert"
then cp "$i" "./ISO3200/$i"
fi
done
exit

Wenn ich in der Shell exiftool -ISO bild.jpg, bekomme ich den entsprechen Wert.

In dem Script wird exiftool nicht erkannt und ein ISO-Wert nicht in der Variablen $isowert gespeichert.
Es ist schon sehr, sehr lange her, dass ich mich an Scripten versucht habe und das meiste ist in meinem prädementen Hirn verloren gegangen. Und mein ohnehin unzureichendes Englisch hilft mir auch nicht weiter.

Falls sich Forenmitglieder das Script mal ansehen und mir weiter helfen würden, wäre ich sehr dankbar.
Fritz

michel_vaclav
03.06.19, 18:12
Hallo,
ich habe Dein Skript mal ausprobiert und festgestellt, dass es so gar nicht funktionieren kann.
Was soll in Zeile 3 passieren? exiftool -ISO erwartet noch eine Dateiangabe, die hier nicht kommt.
Sollte die Abfrage nicht in die for-Schleife? Und wie gesagt: Der Befehl in Zeile 3 wird Dir keine ISO-Ausgabe machen, solange Du ihn nicht auf eine Datei loslässt.
Du solltest Dir nochmals genau vor Augen halten, was jede Zeile genau macht oder nicht macht.
michel_vaclav

fsanne
03.06.19, 18:30
Hallo, danke für den Hinweis.
In Zeile 3, das soll eine Variable sein (isowert)
In diese Variable soll der von exiftool ermittelte ISO-Wert gespeichert werden.
In der For-Schleife soll dann (theoretisch) für jedes Bild geprüft werden, ob der ISO-Wert 3200 beträgt. Wenn ja, soll das Bild in den Ordner ISO3200 kopiert werden, aber nur dann.
Dann kommt das nächste Bild.
Aber ich kriege den von exiftool ermittelten wert gar nicht in die Variable-
Aber wie gesagt,. ich habe fast alles vergessen, bin aber schon den ganzen Tag dabei, das mit "trial and error" zu bewerkstelligen. Klappt nur leider nicht.
Grüße, Fritz

nopes
03.06.19, 19:11
Weiterhin viel Erfolg, die Backticks nehmen glaube ich nur stdout mit, da läuft aber was mit perl, bash, csh, sh bei mir durcheinander - ich meine, dass mein hack da war vorher stdout usw zusammen zu fassen, ggf. googlen bzw.


exiftool -ISO bild.jpg &> foo.txt
exiftool -ISO bild.jpg 2>&1 >foo.txt
Dann prüfen, ob foo.txt den erwarteten Inhalt hat, den Befehl (ohne Umleitung in eine Datei) dann in Backticks var=`cmd` bzw var=$(cmd) legen, geht aber auch ganz krass in Richtung "trail and error" :)

[edit]
Wobei Zeile 3 halt defekt ist, set -x ist da dein Freund - suche nach "shell debug"

michel_vaclav
03.06.19, 19:49
Ich hab zum Test einfach mal so angefangen:
#!/bin/bash
for i in *.JPG
do
isowert=$(exiftool -ISO $i)

echo Bild "$i" hat "$isowert"

done
exit

Ausgeführt in einem Verzeichnis mit JPG-Dateien liefert es eine plausible Ausgabe.

fsanne
03.06.19, 19:56
Hallo nopes,
Danke, ich habe es gerade beim Bier auf dem Handy gelesen. Mal sehen, ob ich weiter komme.
Irgendwie muss es gehen, wie auch immer. Alles, was ich an fertigen Programmen fand, überzeugte mich nicht.
Danke für Deinen Hinweis.
Fritz

fsanne
03.06.19, 20:01
Und auch Dir michel_vaclav Danke. Ich forsche weiter und bin sehr froh über Eure Hilfsansätze.
Grüße, Fritz

fsanne
06.06.19, 21:40
Hallo noch mal.
Bis hierher bin ich vorgestoßen


#!/bin/bash
cd ~/Schreibtisch/Bildbearbeitung

mkdir -p ./ISO3200
for i in *.jpg
do
isowert=$(exiftool -t -s3 -ISO $i)
variso="$isowert"-"$i"
echo "$variso"
convert "$i" "$variso"
done
mv 3200*.jpg ISO3200
rm 400*.jpg
exit

Das klappt soweit, ist aber, was das "rm" betrifft, Viel zu gefährlich
Meine Frage ist, wie es mir gelingt, nur die Dateien mit convert zu bearbeiten, die ISO 3200 im Namen haben, und die anderen unberücksichtigt zu lassen.
Hat vielleicht jmand noch einen weiteren Schubser für mich?
Danke allen, Fritz

nopes
07.06.19, 10:28
Einfach anders "globen" http://tldp.org/LDP/abs/html/globbingref.html http://man7.org/linux/man-pages/man3/glob.3.html

fsanne
08.06.19, 10:33
@nopes.
Ui, habe mir mal gerade den Inhalt des links angesehen - das ist für mich alten Sack wahrscheinlich besser, als Kreuzworträtsel oder Sudoku in der Apothekenumschau zu lösen!
Aber ohne Dich hätte ich nicht gefunden, wonach ich suchen muss. Danke dafür!
Vielleicht finde ich ja die Lösung in diesen scriptschnipseln. Wg. meinem veraltetem Englisch habe ich ohnehin "ding" installiert, sodass ich vage Hoffnung habe, das Wesentliche überhaupt zu verstehen.
Die Nutzung von "-convert" in diesem Zusammenhang war übrigens sehr langsam. So habe ich es mit mal mit "mv" versucht, bislang aber ohne richtiges Ergebnis - auch mit einer pipe in einen temporären Ordner - auch kein Glück bisher.
Eigentlich brauche ich das gar nicht mehr, weil ich die Bearbeitung der Bilder inzwischen abgeschlossen habe.
Aber jetzt bin ich angefixt und will's wissen.
Gruß und Danke nochmals, Fritz