obter detalhes da imagem ImageMagick

1

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

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

PS - Li esta página link , mas não consigo encontrar como obter o caminho do local do arquivo e como incluir arquivos em subpastas.

    
por Renuka 29.10.2014 / 20:41

2 respostas

0

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

    
por 30.10.2014 / 04:12
0

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

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

(Você não disse em qual sistema operacional você está. Os itens acima funcionarão para Linux, Unix e Mac OS X. No Windows, use .\*.* e .\*.*\*.* como curingas.)

Atenção! , se você tiver arquivos sem imagem ou documentos PDF em suas pastas, esse comando poderá ser executado por um longo tempo. Arquivos sem 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 .

Por isso, pode ser melhor usar essa 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
combined.jpg #21270389 JPEG 528221B 1600 1195
res.jpg #26408022 JPEG 57546B 603 300
red-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
big.jpg #27290574 JPEG 19216B 1024 576
double.jpg #27290574 JPEG 35076B 480 270
small.jpg #27290574 JPEG 20716B 720 404

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

Você pode querer que a saída pareça mais semelhante a 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
combined.jpg                         #21270389  JPEG  528221B   1600  1195
res.jpg                              #26408022  JPEG  57546B    603   300
red-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
big.jpg                              #27290574  JPEG  19216B    1024  576
double.jpg                           #27290574  JPEG  35076B    480   270
small.jpg                            #27290574  JPEG  20716B    720   404
    
por 16.12.2014 / 16:26