Получить детали изображения ImageMagick

Получить детали изображения ImageMagick

Как получить сведения об изображениях из всех папок и подпапок с помощью ImageMagick в этом формате.

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

PS - Я прочитал эту страницуhttp://www.imagemagick.org/script/escape.phpно не могу найти, как получить путь к расположению файла и как включить файлы в подпапки.

решение1

Я почти уверен, что ImageMagick не будет работать рекурсивно, как это само по себе. Вам нужно будет написать скрипт/программу вокруг него, чтобы работать со структурой каталогов и вызывать его один раз для каждого файла, который вы хотите проверить.

решение2

Следующая команда вернет нужную вам информацию:

  identify -format "%f %d %m %b %w %h\n" ./* ./*/*
  1. Последовательность выхода для файлового каталога — %d.
  2. Чтобы включить все файлы в текущей папке, используйте ./*(подстановочный знак оболочки).
  3. Чтобы включить все файлы во всех подпапках, используйте ./*/*(подстановочные знаки оболочки).

(Вы не указали, какая у вас операционная система. Вышеуказанное будет работать для Linux, Unix и Mac OS X. Для Windows используйте .\*.*и .\*.*\*.*в качестве подстановочных знаков.)

Внимание!, если в ваших папках есть файлы не-изображения или документы PDF, эта команда может выполняться довольно долго. Файлы не-изображения выдадут сообщение об ошибке типа

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

Этого можно избежать, перенаправив все сообщения об ошибках в /dev/null.

Поэтому, возможно, лучше использовать такой вариант:

 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

Вот пример из Mac OS X:

delta.jpg #12649876 JPEG 17441B 307 205
CMYK_separation_–_maximum_black.jpg #21270389 JPEG 1453360B 1600 4780
HFnCz.jpg #21270389 JPEG 356748B 1600 1195
объединенный.jpg #21270389 JPEG 528221B 1600 1195
разрешение.jpg #26408022 JPEG 57546B 603 300
красный-500x2000.jpg #26951336 JPEG 6288B 500 2000
resized-red-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
большой-край-25.jpg #27290574 JPEG 98916B 1024 288
большой.jpg #27290574 JPEG 19216B 1024 576
двойной.jpg #27290574 JPEG 35076B 480 270
small.jpg #27290574 JPEG 20716B 720 404

(Да, я выполнил эту команду в каталоге, в котором есть подкаталоги с именами #27290574, #26951336и тому подобное....)

Возможно, вы захотите, чтобы вывод выглядел более таблично. Для этого передайте результаты через column -t. Попробуйте это:

 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

Результат в моем случае:

delta.jpg #12649876 JPEG 17441B 307 205
CMYK_separation_–_maximum_black.jpg #21270389 JPEG 1453360B 1600 4780
HFnCz.jpg #21270389 JPEG 356748B 1600 1195
объединенный.jpg #21270389 JPEG 528221B 1600 1195
разрешение.jpg #26408022 JPEG 57546B 603 300
красный-500x2000.jpg #26951336 JPEG 6288B 500 2000
resized-red-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
большой-край-25.jpg #27290574 JPEG 98916B 1024 288
большой.jpg #27290574 JPEG 19216B 1024 576
двойной.jpg #27290574 JPEG 35076B 480 270
small.jpg #27290574 JPEG 20716B 720 404

Связанный контент