Obtenha detalhes da imagem ImageMagick

Obtenha detalhes da imagem ImageMagick

Como obter detalhes de imagens de todas as pastas e subpastas com ImageMagick neste formato.

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

PS - eu li esta páginahttp://www.imagemagick.org/script/escape.phpmas não consigo descobrir como obter o caminho do local do arquivo e como incluir arquivos em subpastas.

Responder1

Tenho certeza de que o ImageMagick não funcionará recursivamente assim por si só. Você precisará escrever um script/programa em torno dele para trabalhar em sua estrutura de diretórios e chamá-lo uma vez por arquivo que deseja verificar.

Responder2

O comando a seguir retornará as informações que você está procurando:

  identify -format "%f %d %m %b %w %h\n" ./* ./*/*
  1. A sequência de escape para o diretório de arquivos é %d.
  2. Para incluir todos os arquivos na pasta atual, use ./*(o curinga do shell).
  3. Para incluir todos os arquivos em todas as subpastas, use ./*/*(caracteres curinga do shell).

(Você não informou em qual sistema operacional está. O acima funcionará para Linux, Unix e Mac OS X. Para Windows, use .\*.*e .\*.*\*.*como curingas.)

Atenção!, se você tiver arquivos que não sejam de imagem ou documentos PDF em suas pastas, esse comando poderá ser executado por um longo tempo. Arquivos que não são de imagem produzirão uma mensagem de erro como

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

Isso pode ser evitado redirecionando todas as mensagens de erro para /dev/null.

Portanto, pode ser melhor 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

Aqui está um exemplo do 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
vermelho-500x2000.jpg #26951336 JPEG 6288B 500 2000
redimensionado-vermelho-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
big-edge-25.jpg #27290574 JPEG 98916B 1024 288
grande.jpg #27290574 JPEG 19216B 1024 576
duplo.jpg #27290574 JPEG 35076B 480 270
pequeno.jpg #27290574 JPEG 20716B 720 404

(Sim, executei este comando em um diretório que possui subdiretórios chamados #27290574e #26951336semelhantes....)

Você pode querer que a saída pareça mais com uma tabela. Para isso, canalize os resultados por meio de column -t. Tente isso então:

 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 no meu 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
vermelho-500x2000.jpg #26951336 JPEG 6288B 500 2000
redimensionado-vermelho-2000x2000.jpg #26951336 JPEG 7430B 1000 1000
big-edge-25.jpg #27290574 JPEG 98916B 1024 288
grande.jpg #27290574 JPEG 19216B 1024 576
duplo.jpg #27290574 JPEG 35076B 480 270
pequeno.jpg #27290574 JPEG 20716B 720 404

informação relacionada