O jpeginfo pode ajudar a verificar automaticamente a integridade de uma quantidade enorme de imagens, em seu sistema Linux.
Trata-se de um pequeno utilitário de linha de comando (CLI), flexível, rápido e eficiente.
Posso usar o jpeginfo para checar um único arquivo de imagem ou centenas deles.
Como, para um trabalho desta natureza, você quer resultados rápidos, as ferramentas CLI são a melhor opção — por que conseguem mostrar os resultados que você deseja, com o menor consumo possível de recursos do sistema.
Como instalar o jpeginfo
No Debian e no Ubuntu, ele pode ser instalado, com o apt:
sudo apt install jpeginfo _
Trata-se de um programa muito pequeno, que não vai pesar no sistema — caso você se preocupe com estes detalhes. Além disto, sempre é possível removê-lo, depois de realizar o seu trabalho.
Se estiver curioso, você pode conferir o tamanho dele com a opção ‘show’ do apt:
apt show jpeginfo | grep -i size WARNING: apt does not have a stable CLI interface. Use with caution in scripts. Installed-Size: 25,6 kB Download-Size: 13,2 kB _
Ele pode ser instalado em questão de segundos, como você pode ver.
O tamanho do jpeginfo, após a instalação, é aproximadamente 25 Kb.
Como verificar a integridade das minhas fotos?
Como eu disse, dá pra verificar apenas uma imagem, assim:
jpeginfo --check System76-System76_Brandmark_Blue-by_Kate_Hazen_of_System76.jpg _
O texto “[OK]”, ao final das informações básicas do arquivo, indica que está tudo bem com ele:
System76-System76_Brandmark_Blue-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 985882 [OK] _
jpeginfo --check foto-danificada.jpg _
… ou você pode obter uma indicação de que há “[ERROR]”:
foto-danificada.jpg Not a JPEG file: starts with 0x5c 0x6e [ERROR] _
Você pode pedir para verificar todas as imagens do diretório corrente, com o uso de curingas:
jpeginfo --check *.jpg _
foto-danificada.jpg Not a JPEG file: starts with 0x5c 0x6e [ERROR] System76-Old_Man_Smoked_His_Pipe-by_Ian_Hex_of_LightSweep.jpg 2560 x 1440 24bit JFIF P 3768044 [OK] System76-System76_Brandmark_Blue-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 985882 [OK] System76-System76_Brandmark_Gray-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 824133 [OK] System76-System76_Brandmark_Yellow-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 952200 [OK] System76-System76_Logo_Blue-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 974983 [OK] System76-System76_Logo_Gray-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 731859 [OK] System76-System76_Logo_Yellow-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 943715 [OK] _
Observe que as informações, na listagem normal, vêm em colunas:
- nome do arquivo
- resolução da imagem
- profundidade das cores
- padrão do arquivo de imagem
- padrão da decodificação (progressiva, interpolada etc.)
- Tamanho, em bytes
Na última coluna, o resultado do teste.
A sigla JFIF, que aparece na lista acima, significa JPEG File Interchange Format. Trata-se do formato padrão do arquivo da imagem.
Este formato é compatível com o padrão JPEG Interchange Format (JIF) e resolve algumas de suas limitações de codificação.
Tal como todos os arquivos JIF, os dados contidos em imagens JFIF comprimidos com o uso de técnicas no padrão JPEG, uma vez que as imagens JFIF são comumente chamadas “JPEG/JFIF”.
Use a opção ‘–lsstyle’, para ver o resultado organizado de outra forma:
jpeginfo --check --lsstyle *.jpg
Not a JPEG file: starts with 0x5c 0x6e foto-danificada.jpg [ERROR] 2560 x 1440 24bit JFIF P 3768044 System76-Old_Man_Smoked_His_Pipe-by_Ian_Hex_of_LightSweep.jpg [OK] 2560 x 1440 24bit JFIF P 985882 System76-System76_Brandmark_Blue-by_Kate_Hazen_of_System76.jpg [OK] 2560 x 1440 24bit JFIF P 824133 System76-System76_Brandmark_Gray-by_Kate_Hazen_of_System76.jpg [OK] 2560 x 1440 24bit JFIF P 952200 System76-System76_Brandmark_Yellow-by_Kate_Hazen_of_System76.jpg [OK] 2560 x 1440 24bit JFIF P 974983 System76-System76_Logo_Blue-by_Kate_Hazen_of_System76.jpg [OK] 2560 x 1440 24bit JFIF P 731859 System76-System76_Logo_Gray-by_Kate_Hazen_of_System76.jpg [OK] 2560 x 1440 24bit JFIF P 943715 System76-System76_Logo_Yellow-by_Kate_Hazen_of_System76.jpg [OK] _
Use o comando grep, para ver apenas os resultados que retornaram erro:
jpeginfo --check --lsstyle *.jpg | grep -i error _
Not a JPEG file: starts with 0x5c 0x6e foto-danificada.jpg [ERROR] _
Use a opção ‘–delete’, para remover automaticamente todos os arquivos que forem encontrados com erros:
jpeginfo --delete *.jpg _
Use a opção ‘–info’, para obter mais detalhes nas informações sobre cada arquivo:
jpeginfo --info *.jpg _
System76-Old_Man_Smoked_His_Pipe-by_Ian_Hex_of_LightSweep.jpg 2560 x 1440 24bit JFIF Progressive Huffman,300dpi 3768044 System76-System76_Brandmark_Blue-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF Progressive Huffman,150dpi 985882 System76-System76_Brandmark_Gray-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF Progressive Huffman,150dpi 824133 System76-System76_Brandmark_Yellow-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF Progressive Huffman,150dpi 952200 System76-System76_Logo_Blue-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF Progressive Huffman,150dpi 974983 System76-System76_Logo_Gray-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF Progressive Huffman,150dpi 731859 System76-System76_Logo_Yellow-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF Progressive Huffman,150dpi 943715 _
Calcule a soma MD5, ou MD5 checksum, com a opção ‘–md5’:
jpeginfo --md5 *.jpg _
System76-Old_Man_Smoked_His_Pipe-by_Ian_Hex_of_LightSweep.jpg 2560 x 1440 24bit JFIF P 3768044 f45c6abe65faff92c753ca24ec5f8152 System76-System76_Brandmark_Blue-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 985882 3fc69c0484860c02b21cb6582067c28b System76-System76_Brandmark_Gray-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 824133 3406d52789e7a79cf9efc76135416cf4 System76-System76_Brandmark_Yellow-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 952200 bb1cd2cd03730e8e56d5876c6638de47 System76-System76_Logo_Blue-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 974983 dc2e914b26c91dceb745baab1dd677aa System76-System76_Logo_Gray-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 731859 9efd7ded3aceb671a708bac28a7aeb6a System76-System76_Logo_Yellow-by_Kate_Hazen_of_System76.jpg 2560 x 1440 24bit JFIF P 943715 30ee050e0c5d14b7c9c6f44b7df2fff4 _
Fazer o cálculo da soma MD5, é útil para quem vai fazer a transmissão de uma grande quantidade de arquivos de imagem e deseja obter uma checagem, no final, de que a transferência ocorrem sem incidentes.
Como você já deve ter percebido, pode combinar várias opções na mesma linha.
Para saber mais sobre o jpeginfo, use a opção ‘–help’ ou consulte o manual do sistema: man jpeginfo.