Se stai parlando di file JPEG, l'utilità jpeginfo è esattamente quello che stai cercando. Può controllare i file per diversi tipi di errori JPEG e corruzione e può restituire un codice di errore (la cosa più utile per lo scripting) o semplicemente eliminare i file con errori.
Lo uso come parte del mio trasferimento iniziale di file, per essere sicuro che tutto sia stato copiato senza fare affidamento sul controllo manuale. (Successivamente, mi assicuro che i loro checksum non cambino come parte della mia normale protezione di backup / bitrot.)
Il programma è a riga di comando e viene fornito come codice sorgente, ma dovrebbe essere facile da compilare e utilizzare su qualsiasi distribuzione Linux o su un Mac con un ambiente di sviluppo impostato correttamente. Sono sicuro che potresti persino farlo su Windows con Cygwin o MinGW. (Ad esempio, anche se non posso garantire la sua integrità, questo post sul blog sembra legittimo e include un download precompilato.) Per crearlo tu stesso:
$ git clone https://github.com/tjko/jpeginfo.git
Cloning into 'jpeginfo'...
[...]
Checking connectivity... done
$ cd jpeginfo/
$ ./configure && make
Questo dovrebbe creare un jpeginfo
comando che puoi eseguire sul posto o copiare dove vuoi (possibilmente usando make install
).
Quindi, lo esegui in questo modo:
$ ./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]
Qui test1.jpg va benissimo e test2.jpg ho eliminato alcuni byte dalla fine e test3.jpg ho cambiato alcuni byte casuali nell'intestazione.
Se disponi di file RAW, consulta questa pagina dell'American Society of Media Photographers su DNG Validation o uno sui dettagli di convalida dei dati , che copre l'uso del convertitore DNG di Adobe per convalidare in batch i formati RAW proprietari. (Sfortunatamente, si tratta di un'operazione GUI e non necessariamente facilmente gestibile da script.)
Se hai una videocamera che genera nativamente la versione 1.2 di DNG, è ancora meglio, in quanto include un checksum MD5 incorporato dei dati dell'immagine. Sfortunatamente, questo non sembra essere memorizzato con i normali metadati dell'immagine - o almeno exiftool ed exiv2 non lo riconoscono e leggono i file DNG 1.2 in generale - il che significa che per quanto ne so attualmente la convalida Adobe lo strumento è l'unico modo per trarne vantaggio.