Obtener detalles de la imagen ImageMagick

Obtener detalles de la imagen ImageMagick

Cómo obtengo detalles de las imágenes de todas las carpetas y subcarpetas con ImageMagick en este formato.

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

PD: He leído esta página.http://www.imagemagick.org/script/escape.phppero no puedo encontrar cómo obtener la ruta de ubicación del archivo y cómo incluir archivos en subcarpetas.

Respuesta1

Estoy bastante seguro de que ImageMagick no funcionará de forma recursiva por sí solo. Necesitará escribir un script/programa a su alrededor para trabajar en la estructura de su directorio y llamarlo una vez por cada archivo que desee verificar.

Respuesta2

El siguiente comando le devolverá la información que está buscando:

  identify -format "%f %d %m %b %w %h\n" ./* ./*/*
  1. La secuencia de escape para el directorio de archivos es %d.
  2. Para incluir todos los archivos en la carpeta actual, utilice ./*(el comodín del shell).
  3. Para incluir todos los archivos en todas las subcarpetas, utilice ./*/*(comodines de shell).

(No dijiste en qué sistema operativo estás. Lo anterior funcionará para Linux, Unix y Mac OS X. Para Windows, usa .\*.*y .\*.*\*.*como comodín).

¡Atención!, si tiene archivos que no sean imágenes o documentos PDF en sus carpetas, este comando podría ejecutarse durante bastante tiempo. Los archivos que no son de imagen producirán un mensaje de error como

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

Esto se puede evitar redirigiendo todos los mensajes de error a /dev/null.

Entonces puede ser mejor usar esta variante:

 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

Aquí hay un ejemplo de 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
combinado.jpg #21270389 JPEG 528221B 1600 1195
res.jpg #26408022 JPEG 57546B 603 300
rojo-500x2000.jpg #26951336 JPEG 6288B 500 2000
redimensionado-rojo-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
borde-grande-25.jpg #27290574 JPEG 98916B 1024 288
grande.jpg #27290574 JPEG 19216B 1024 576
doble.jpg #27290574 JPEG 35076B 480 270
pequeño.jpg #27290574 JPEG 20716B 720 404

(Sí, ejecuté este comando en un directorio que tiene subdirectorios llamados #27290574y #26951336similares...)

Es posible que desee que el resultado se parezca más a una tabla. Para ello, canalice los resultados a través de column -t. Prueba esto entonces:

 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

Resultado en mi caso:

delta.jpg #12649876 JPEG 17441B 307 205
CMYK_separation_–_maximum_black.jpg #21270389 JPEG 1453360B 1600 4780
HFnCz.jpg #21270389 JPEG 356748B 1600 1195
combinado.jpg #21270389 JPEG 528221B 1600 1195
res.jpg #26408022 JPEG 57546B 603 300
rojo-500x2000.jpg #26951336 JPEG 6288B 500 2000
redimensionado-rojo-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
borde-grande-25.jpg #27290574 JPEG 98916B 1024 288
grande.jpg #27290574 JPEG 19216B 1024 576
doble.jpg #27290574 JPEG 35076B 480 270
pequeño.jpg #27290574 JPEG 20716B 720 404

información relacionada