Bilddetails abrufen ImageMagick

Bilddetails abrufen ImageMagick

Wie erhalte ich mit ImageMagick Bilddetails aus allen Ordnern und Unterordnern in diesem Format?

file-name file-location file-format size width height

PS - Ich habe diese Seite gelesenhttp://www.imagemagick.org/script/escape.phpkann aber nicht herausfinden, wie man den Dateispeicherortpfad erhält und wie man Dateien in Unterordner einschließt.

Antwort1

Ich bin ziemlich sicher, dass ImageMagick nicht von selbst so rekursiv funktioniert. Sie müssen ein Skript/Programm darum herum schreiben, um Ihre Verzeichnisstruktur zu durcharbeiten und es einmal pro Datei aufzurufen, die Sie überprüfen möchten.

Antwort2

Der folgende Befehl gibt die gesuchten Informationen zurück:

  identify -format "%f %d %m %b %w %h\n" ./* ./*/*
  1. Die Escape-Sequenz für das Dateiverzeichnis ist %d.
  2. Um alle Dateien im aktuellen Ordner einzuschließen, verwenden Sie ./*(das Shell-Platzhalterzeichen).
  3. Um alle Dateien in allen Unterordnern einzuschließen, verwenden Sie ./*/*(Shell-Platzhalter).

(Sie haben nicht angegeben, welches Betriebssystem Sie verwenden. Das Obige funktioniert für Linux, Unix und Mac OS X. Verwenden Sie unter Windows .\*.*und .\*.*\*.*als Platzhalter.)

Aufmerksamkeit!Wenn Sie in Ihren Ordnern keine Bilddateien oder PDF-Dokumente haben, kann die Ausführung dieses Befehls ziemlich lange dauern. Bei Nicht-Bilddateien wird eine Fehlermeldung wie

identify: no decode delegate for this image format `EXE' @ error/constitute.c/ReadImage/501.

Dies kann vermieden werden, indem alle Fehlermeldungen an umgeleitet werden /dev/null.

Daher ist es möglicherweise besser, diese Variante zu verwenden:

 identify                                   \
   -format "%f %d %m %b %w %h\n"            \
    *.{jpg,jpeg,JPG,png,tif,tiff,ppm,gif}   \
    */*.{jpg,JPG,jpeg,png,tif,tiff,ppm,gif} \
   2>/dev/null

Hier ist ein Beispiel von Mac OS X:

delta.jpg #12649876 JPEG 17441B 307 205
CMYK_Separation_–_maximales_Schwarz.jpg #21270389 JPEG 1453360B 1600 4780
HFnCz.jpg #21270389 JPEG 356748B 1600 1195
kombiniert.jpg #21270389 JPEG 528221B 1600 1195
res.jpg #26408022 JPEG 57546B 603 300
rot-500x2000.jpg #26951336 JPEG 6288B 500 2000
resized-red-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
big-edge-25.jpg #27290574 JPEG 98916B 1024 288
groß.jpg #27290574 JPEG 19216B 1024 576
double.jpg #27290574 JPEG 35076B 480 270
klein.jpg #27290574 JPEG 20716B 720 404

(Ja, ich habe diesen Befehl in einem Verzeichnis ausgeführt, das Unterverzeichnisse mit den Namen usw. hat #27290574. #26951336)

Möglicherweise möchten Sie, dass die Ausgabe eher wie eine Tabelle aussieht. Leiten Sie dazu die Ergebnisse durch column -t. Versuchen Sie dann Folgendes:

 identify                                   \
   -format "%f %d %m %b %w %h\n"            \
    *.{jpg,jpeg,JPG,png,tif,tiff,ppm,gif}   \
    */*.{jpg,JPG,jpeg,png,tif,tiff,ppm,gif} \
   2>/dev/null  |  column -t

Ergebnis in meinem Fall:

delta.jpg #12649876 JPEG 17441B 307 205
CMYK_Separation_–_maximales_Schwarz.jpg #21270389 JPEG 1453360B 1600 4780
HFnCz.jpg #21270389 JPEG 356748B 1600 1195
kombiniert.jpg #21270389 JPEG 528221B 1600 1195
res.jpg #26408022 JPEG 57546B 603 300
rot-500x2000.jpg #26951336 JPEG 6288B 500 2000
resized-red-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
big-edge-25.jpg #27290574 JPEG 98916B 1024 288
groß.jpg #27290574 JPEG 19216B 1024 576
double.jpg #27290574 JPEG 35076B 480 270
klein.jpg #27290574 JPEG 20716B 720 404

verwandte Informationen