Wie sortiere ich Bilder basierend auf der Auflösung in Ordner?

9

Hintergrund: Ich habe einen Ordner voller gespeicherter Desktop-Bilder. Ich möchte sie basierend auf ihrer Auflösung in Ordnern ablegen - 1024 x 768 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 die Sache einfacher macht.

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

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

Jede Hilfe wäre dankbar! Vielen Dank!

brennbar
quelle

Antworten:

11

Ich weiß, dass es ein über ein Jahr dauerndes Thema ist (Entschuldigung), aber ich denke, jemand braucht möglicherweise das voll funktionsfähige Skript, also hier ist es. Nehmen wir die Ideen hier und kompilieren sie in ein Skript, das wir bekommen.

#!/bin/bash

for image in *.jpg;
    do res=$(identify -format %wx%h\\n $image);
    mkdir -p $res;
    mv $image $res;
done
Zatatlan
quelle
4

Im Ernst, danke für die Antwort, alle! Ich bin darauf zurückgekommen, erfahrener, und die meisten Kommentare hier sind jetzt sinnvoller.

Ich habe das Skript von @ zatatlan leicht angepasst, um Leerzeichen in Dateinamen aufzunehmen und weitere Dateierweiterungen hinzuzufügen.

#!/bin/bash

shopt -s nullglob # The script spits errors if this is not set and there are, say, no *.png files.
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
brennbar
quelle
3

Es ist möglich, mit imagemagick die Bildauflösung zu erkennen . Wickeln Sie 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 auf meinem Kopf. Die Syntax ist wahrscheinlich falsch, kann aber einige Hinweise 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 Verzeichnisse im laufenden Betrieb. Sowohl Bash als auch Imagemagick sind für Mac verfügbar.

user4126
quelle
Sie können das Skript etwas kürzer und einfacher gestalten, indem Sie den ifBlock durch einen einfachen ersetzen mkdir -p $res.
Ryan C. Thompson
2

Es gibt Amok EXIF ​​Sorter

AmoK Exif Sorter kann Bilder umbenennen und in beliebige Ordner verschieben oder kopieren.
Die Ordner können nach 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 sowie IPTC-formatierte Dateien.

Geschrieben in JAVA , funktioniert auf allen unterstützenden Plattformen JRE5.
Überprüfen Sie die Funktionsliste auf dem Link.

Lassen Sie sich von der deutschen Sprache nicht entmutigen.
Ziehen Sie nach unten Spracheund wählen Sie Englisch, starten Sie die Anwendung neu.

nik
quelle
1

Mit dem Befehl ImageMagick identifiz können Sie die Breite und Höhe in Pixel 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 die Dateien aus Sicherheitsgründen in ein Verzeichnis kopieren, das den gleichen Namen wie die Auflösung hat (überprüfen Sie, ob es vorhanden ist, und erstellen Sie es, wenn nicht).

mas
quelle
0

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

DHayes
quelle