tux on orange background

Como obter informações dos arquivos de imagem com o identify, no Linux

Esta dica é útil para webmasters, que precisam obter informações sobre imagens armazenadas em servidores sFTP, FTP, etc.
Todos sabemos que uma página web vai carregar mais rápido no navegador do cliente, se as imagens estiverem devidamente otimizadas ou, pelo menos usarem resoluções mais adequadas ao tráfego eficiente de dados.
A maioria dos servidores web, atualmente, usam distribuições Linux ou FreeBSD. Portanto, a dica que segue vale para todos.
O identify é um aplicativo utilitário CLI, que faz parte do pacote de ferramentas de manipulação de imagens ImageMagick, que costuma estar instalado na maioria das distribuições. Se não estiver, instale você mesmo ou peça para o administrador.
O utilitário tem (entre outras) a função de obter e exibir informações sobre o formato e as características de um ou mais arquivos de imagem.
Ele também pode ajudar a determinar se uma imagem se encontra incompleta ou corrompida.
O comportamento básico consiste em retornar informações sobre resolução e mapa de cores.
Se você fizer uso de algumas de suas opções, contudo, vai poder obter mais dados sobre as imagens no diretório.
Veja um exemplo do uso básico do identify:

identify images/wallpapers/system76/System76-System76_Logo_DarkBlue-remix.jpg 

Como você pode observar, no resultado abaixo, o comando exibe o nome do arquivo seguido de informações relacionadas ao seu formato, resolução, mapa de cores, tamanho (em MB) e, por fim, o tempo que a imagem demora para carregar.

images/wallpapers/system76/System76-System76_Logo_DarkBlue-remix.jpg 
JPEG 2560x1440 2560x1440+0+0 8-bit sRGB 1.455MB 0.090u 0:00.100

Você pode usar coringas para obter informações sobre várias imagens, dentro de um diretório:

identify *.png
System76-Fractal_Mountains-by_Kate_Hazen_of_System76.png PNG 2560x1440 2560x1440+0+0 8-bit sRGB 216KB 0.000u 0:00.000
System76-Fractal_Salad-by_Kate_Hazen_of_System76.png[1] PNG 2560x1440 2560x1440+0+0 8-bit sRGB 1.233MB 0.000u 0:00.000
System76-Geometric-adapted_by_Kate_Hazen_of_System76.png[2] PNG 2560x1440 2560x1440+0+0 8-bit sRGB 543KB 0.000u 0:00.000
System76-Honeycomb-by_Kate_Hazen_of_System76.png[3] PNG 2560x1440 2560x1440+0+0 8-bit sRGB 1.274MB 0.000u 0:00.000
System76-Robot-by_Kate_Hazen_of_System76.png[4] PNG 2560x1440 2560x1440+0+0 8-bit sRGB 117KB 0.000u 0:00.000
System76-Unleash_Your_Robot_Blue-by_Kate_Hazen_of_System76.png[5] PNG 2560x1440 2560x1440+0+0 8-bit sRGB 366KB 0.000u 0:00.000
System76-Unleash_Your_Robot-by_Kate_Hazen_of_System76.png[6] PNG 2560x1440 2560x1440+0+0 8-bit sRGB 317KB 0.000u 0:00.000

Se acrescentar a opção ‘-verbose’, você irá obter uma quantidade (muito) maior de informações sobre a imagem:

identify -verbose System76-Unleash_Your_Robot-by_Kate_Hazen_of_System76.png
Image: System76-Unleash_Your_Robot-by_Kate_Hazen_of_System76.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 2560x1440+0+0
  Units: Undefined
  Type: Palette
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
  Channel statistics:
    Pixels: 3686400
    Red:
      min: 49 (0.192157)
      max: 251 (0.984314)
      mean: 67.3018 (0.263929)
      standard deviation: 52.2158 (0.204768)
      kurtosis: 8.12896
      skewness: 3.16752
    Green:
      min: 49 (0.192157)
      max: 211 (0.827451)
      mean: 64.1777 (0.251677)
      standard deviation: 45.8988 (0.179995)
      kurtosis: 5.73893
      skewness: 2.76302
    Blue:
      min: 8 (0.0313725)
      max: 240 (0.941176)
      mean: 53.8382 (0.21113)
      standard deviation: 27.4086 (0.107485)
      kurtosis: 32.4493
      skewness: 4.88138
  Image statistics:
    Overall:
      min: 8 (0.0313725)
      max: 251 (0.984314)
      mean: 61.7726 (0.242245)
      standard deviation: 43.1448 (0.169195)
      kurtosis: 11.5967
      skewness: 3.57292
  Colors: 158
  Histogram:
      1077: ( 49,178,217) #31B2D9 srgb(49,178,217)
      1470: ( 49,187,228) #31BBE4 srgb(49,187,228)

...

      4954: (239,201, 11) #EFC90B srgb(239,201,11)
    257974: (251,211,  8) #FBD308 srgb(251,211,8)
  Rendering intent: Perceptual
  Gamma: 0.454545
  Chromaticity:
    red primary: (0.64,0.33)
    green primary: (0.3,0.6)
    blue primary: (0.15,0.06)
    white point: (0.3127,0.329)
  Background color: white
  Border color: srgb(223,223,223)
  Matte color: grey74
  Transparent color: black
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 2560x1440+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Zip
  Orientation: Undefined
  Properties:
    date:create: 2016-09-21T11:51:50-03:00
    date:modify: 2016-09-02T10:53:12-03:00
    png:IHDR.bit-depth-orig: 8
    png:IHDR.bit_depth: 8
    png:IHDR.color-type-orig: 2
    png:IHDR.color_type: 2 (Truecolor)
    png:IHDR.interlace_method: 0 (Not interlaced)
    png:IHDR.width,height: 2560, 1440
    png:sRGB: intent=0 (Perceptual Intent)
    png:text: 1 tEXt/zTXt/iTXt chunks were found
    signature: b7734eceb937dcaa86ca13ecb086850622c67fc8a863fd7c10f095c98498054e
    Software: Adobe ImageReady
  Artifacts:
    filename: System76-Unleash_Your_Robot-by_Kate_Hazen_of_System76.png
    verbose: true
  Tainted: False
  Filesize: 317KB
  Number pixels: 3.686M
  Pixels per second: 61.44MB
  User time: 0.060u
  Elapsed time: 0:01.060
  Version: ImageMagick 6.8.9-9 Q16 x86_64 2016-09-25 http://www.imagemagick.org

Neste caso, recomendo combinar o comando less ou o comando grep, para pausar ou filtrar a listagem.
Os usos do comando permitem, até mesmo, realizar tarefas mais complexas de manipulação de imagens, direto da linha de comando — mas isto, vamos explicar em outro artigo.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia. Fã de séries, como "Rick and Morty" e "BoJack Horseman". Me siga no Twitter e vamos trocar ideias!

Um comentário sobre “Como obter informações dos arquivos de imagem com o identify, no Linux”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *