Wie werden Bilder basierend auf der Auflösung in Ordner sortiert?

7850
flammable

Hintergrund: Ich habe einen Ordner mit gespeicherten Desktop-Bildern. Ich möchte sie in Ordnern ablegen, basierend auf ihrer Auflösung - 1024x768 usw. Das Erstellen der Ordner im laufenden Betrieb ist ein Bonus. Derzeit befinden sich die Bilder alle in einem Ordner, einige befinden sich jedoch in Unterordnern. Ich kann sie von Hand zusammenführen, wenn das alles einfacher macht.

Ich würde das Terminal vorziehen, obwohl ich immer noch ein Bash-Neuling bin. Ich bin eigentlich kein großer Programmierer.

Ich verwende Mac OS X, bin aber nicht dagegen, zusätzliche Apps zu installieren (MacPorts?) Oder sogar ein anderes Betriebssystem (ich habe Windows XP, Windows Vista und Ubuntu 9 in VMWare eingerichtet ).

Jede Hilfe wäre dankbar! Vielen Dank!

8

6 Antworten auf die Frage

10
zatatlan

Ich weiß, es ist ein Thema von über einem Jahr (tut mir leid, das tut mir leid), aber ich denke, jemand braucht das vollständige Skript, also hier. Nehmen wir die Ideen hier und kompilieren wir sie in ein Skript.

#!/bin/bash  for image in *.jpg; do res=$(identify -format %wx%h\\n $image); mkdir -p $res; mv $image $res; done 
4
flammable

Seriously, thanks for replying, everyone! I've come back to this, more experienced, and most of the comments here make more sense now.

I tweaked @zatatlan's script slightly to accommodate spaces in filenames and to add more file extensions.

#!/bin/bash for image in *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.bmp *.BMP *.png *.PNG; do res=$(identify -format %wx%h\\n "$image"); mkdir -p $res; mv "$image" $res; done 
3
user4126

Es ist möglich, Imagemagick zur Erkennung der Bildauflösung zu verwenden . Wickle es in eine Bash-Schleife und los geht's. Ich werde nicht warten, bis ich zu einer Bash-Shell nach Hause komme, also ist hier etwas unvorstellbar. Die Syntax ist wahrscheinlich falsch, aber es kann Ihnen Anhaltspunkte geben.

for image in $(`*.jpg`) do res=`identify $image | grep -o 'Resolution:'` if [ ! -d $res ]; then mkdir $res fi  mv $image $res done 

Das Skript erstellt im Handumdrehen Verzeichnisse. Bash und imagemagick sind für mac verfügbar.

Sie können das Skript etwas kürzer und einfacher gestalten, indem Sie den `if'-Block durch ein einfaches` mkdir -p $ res` ersetzen. Ryan Thompson vor 14 Jahren 0
2
nik

Es gibt Amok EXIF ​​Sorter

AmoK Exif Sorter kann Bilder umbenennen und in beliebige Ordner verschieben oder kopieren.
Die Ordner können entsprechend den Exif-Daten benannt werden.

Bietet eine Live-Vorschau der Dateinamen, einen integrierten Bild- und Exif-Daten-Viewer, Drag & Drop, Miniaturansicht, automatische Aktualisierungsprüfung und Profile für verschiedene Kameras und Benutzer.

Unterstützt auch Videodateien nach Erstellungsdatum, IPTC-formatierte Dateien.

In JAVA geschrieben, funktioniert auf allen unterstützten Plattformen JRE5.
Überprüfen Sie die Funktionsliste auf dem Link.

Lassen Sie sich nicht von der deutschen Sprache entmutigen.
Ziehen Sie die Anwendung herunter Spracheund wählen Sie sie aus Englisch.

1
mas

Der ImageMagick- Befehl id kann die Breite und Höhe in Pixeln angeben, z

~$ identify -format %w_%h\\n *jpg  2868_3429 1056_960 

Sie können dies als Teil einer for-Schleife in ein Bash-Skript einfügen und zur Sicherheit die Dateien in ein Verzeichnis kopieren, das genauso benannt ist wie die Auflösung (prüfen Sie, ob sie vorhanden ist, und erstellen Sie sie, falls nicht).

0
DHayes

Eine grundlegende Methode, die eine grobe Reihenfolge der Auflösung angibt, ist das Sortieren nach Dateigröße. Dies sollte in jedes Betriebssystem integriert werden, sodass Sie nichts Besonderes benötigen. Der große Haken dabei ist, dass das Format für Ihre Fotos dasselbe sein muss, damit dies funktioniert. Dies ist keine perfekte Lösung, aber es kann eine einfache Unterbrechung sein, bis Sie etwas finden, das tatsächlich passt.