Se você está falando sobre arquivos JPEG, o utilitário jpeginfo é exatamente o que você está procurando. Ele pode verificar os arquivos em busca de diferentes tipos de erros e corrupção de JPEG e retornar um código de erro (a coisa mais útil para scripts) ou apenas excluir arquivos com erros.
Eu uso isso como parte da minha transferência inicial de arquivos, para garantir que tudo seja copiado corretamente, sem depender da verificação manual. (Depois disso, garanto que as somas de verificação não sejam alteradas como parte da minha proteção normal de backup / bitrot.)
O programa é de linha de comando e vem como código-fonte, mas deve ser fácil criar e usar em qualquer distribuição Linux ou em um Mac com um ambiente de desenvolvimento configurado corretamente. Tenho certeza que você pode fazê-lo no Windows com Cygwin ou MinGW. (Por exemplo, embora eu não possa garantir sua integridade, esta postagem no blog parece legítima e inclui um download pré-compilado.) Para criar você mesmo:
$ git clone https://github.com/tjko/jpeginfo.git
Cloning into 'jpeginfo'...
[...]
Checking connectivity... done
$ cd jpeginfo/
$ ./configure && make
Isso deve criar um jpeginfo
comando que você pode executar no local ou copiar onde quiser (possivelmente usando make install
).
Em seguida, execute-o assim:
$ ./jpeginfo -c *.jpg
test1.jpg 1996 x 2554 24bit Exif P 6582168 [OK]
test2.jpg 1996 x 2554 24bit Exif P 6582116 Premature end of JPEG file [WARNING]
test3.jpg Corrupt JPEG data: 1 extraneous bytes before marker 0xe2 1996 x 2554 24bit Exif P 6582169 [WARNING]
Aqui, test1.jpg está perfeitamente bem, e test2.jpg excluí alguns bytes do final e test3.jpg alterei alguns bytes aleatórios no cabeçalho.
Se você tiver arquivos RAW, consulte esta página da Sociedade Americana de Fotógrafos de Mídia sobre Validação DNG , ou uma sobre detalhes de validação de dados , que abrange o uso do conversor DNG da Adobe para validar lotes de formatos RAW proprietários. (Infelizmente, esta é uma operação da GUI e não é necessariamente fácil de criar um script.)
Se você possui uma câmera que produz nativamente a versão 1.2 do DNG, isso é ainda melhor, pois isso inclui uma soma de verificação MD5 incorporada dos dados da imagem. Infelizmente, isso não parece ser armazenado com os metadados normais da imagem - ou pelo menos o exiftool e o exiv2 não o reconhecem e eles leem 1.2 arquivos DNG em geral - o que significa que, até onde sei, atualmente a validação da Adobe ferramenta é a única maneira de tirar proveito disso também.