Quelqu'un connaît-il un moyen de vérifier la corruption des fichiers graphiques (en particulier JPEG, GIF et PNG) (de préférence de manière automatisée)?
Explication:
Il y a quelques jours, une commande a mal fonctionné et a fini par supprimer des milliers de fichiers graphiques d'un volume FAT32 qui était pratiquement à court d'espace. J'ai utilisé plusieurs programmes différents de récupération de fichiers / photos, mais naturellement, ils sont limités dans la quantité qu'ils peuvent récupérer (bien que heureusement, le volume ait des grappes de 8 Ko, ce qui aide quelque peu).
Quoi qu'il en soit, certains des fichiers plus volumineux, qui étaient fragmentés, sont maintenant corrompus. Certains d'entre eux ne sont même pas du tout de vrais fichiers (le logiciel de récupération a simplement vidé les clusters qui étaient indiqués par des entrées de répertoire désormais écrasées), tandis que d'autres sont cassés en raison de la fragmentation.
De plus, comme certains formats d'image incorporent une version plus petite de l'image sous forme de miniature, la numérisation des miniatures n'est pas fiable car elle peut être intacte tandis que le fichier réel (c'est-à-dire l'image lorsqu'elle est visualisée en taille réelle) peut être corrompu.
Voici quelques exemples:
Voici le deuxième. Il est tellement endommagé qu'il n'affiche rien.
(Un troisième ne serait même pas téléchargé car il n'a même pas l'en-tête correct!)
la source
Réponses:
Depuis que je suis tombé sur cela en essayant de répondre à la même question, j'ajouterai une autre excellente solution que j'ai trouvée:
Bad Peggy
Utilisation
Dans le menu, sélectionnez
File > Scan
, puis utilisez la boîte de dialogue de fichier pour accéder au dossier dans lequel se trouvent les images. Le programme commencera alors à analyser le dossier et tous les sous-dossiers pour les images (.jpg, .png, .bmp, .gif). Si vous souhaitez numériser beaucoup d'images, cela prendra un certain temps, car le programme a besoin de charger et d'analyser complètement le fichier image, vous pouvez donc le laisser s'exécuter pendant la nuit.Pendant la numérisation, un pourcentage de progression s'affiche dans la barre d'état. Toutes les images trouvées qui ne sont pas parfaites s'afficheront directement dans la liste. Si vous cliquez sur une image de la liste, elle affichera un aperçu de son apparence. Très souvent, une image n'aura qu'un problème mineur avec le format de fichier et l'image sera toujours très bien. D'autres fois, l'image ne sera pas rendue du tout et l'aperçu sera juste noir. Parfois, l'image sera endommagée et vous verrez quelque chose comme dans la capture d'écran ci-dessus.
Une astuce très pratique consiste à cliquer dans l'en-tête de la colonne
Reason
et les images seront triées en fonction de leur gravité (par exemple, tous les mauvais formats de fichier qui s'affichent toujours correctement se déplaceront vers le bas pour vous permettre de vous concentrer sur les cas les plus graves) .De plus, si la première analyse est terminée et que vous lancez une autre analyse, les résultats seront simplement ajoutés à la liste. Donc, si vous avez de nombreux dossiers différents avec des images, vous pouvez simplement les numériser séquentiellement sans effacer la liste lorsque vous lancez une nouvelle numérisation. Si vous souhaitez effacer la liste, utilisez le menu contextuel et cliquez sur
Clear list
.Liens
téléchargement pour Windows, Linux et OS X peuvent être trouvés ici:
https://www.coderslagoon.com
Le code source est ici:
https://github.com/llaith/BadPeggy
la source
Essayez le jpeginfo '
-c
option ' pour vos fichiers JPEG.J'ai également vu la corruption que vous montrez avec de mauvaises cartes mémoire.
Ce que vous voulez devrait être possible et disponible, vérifiez la corruption des fichiers graphiques ;
une section de l' Encyclopédie en ligne des formats de fichiers graphiques .
Voir également Vérifications de l'intégrité des fichiers dans une introduction de base aux fonctionnalités PNG .
Vous pouvez être intéressé par cette question Stackoverflow,
comment puis-je vérifier par programme si une image (PNG, JPEG ou GIF) est corrompue ?
Mise à jour : tarball source pour la version 1.6.1 par Timo Kokkonen .
Vous devriez pouvoir créer un binaire pour votre machine.
la source
jpeginfo -c *.JPG | ag (WARNING|ERROR)
a travaillé pour moiLe programme d' identification d'ImageMagick vous fera savoir si une image est corrompue. Un test de boucle `` for i in find '' pour un code de retour nul à partir de identifier vous permettrait de scripter le test assez facilement pour vider une liste de fichiers endommagés ou corrompus. Il fonctionne également sur Windows avec PowerShell.
Le code suivant avec des modifications pour votre chemin fonctionne bien dans PowerShell
la source
identify
peut afficher des données JPEG corrompues avec-verbose
, normalement, il ne s'affiche pas.Cela peut être fait en utilisant la commande de la bibliothèque d'imagerie Python
.verify()
. [1]Pour exécuter cela dans Windows, installez Python (j'ai installé la dernière version actuelle de Python 2), puis installez Pillow (un fork de Python Imaging Library (PIL)). Ensuite, copiez le code de jpeg_corrupt.py [2] et enregistrez son contenu dans un fichier .PY, par exemple jpeg_corrupt.py.
Notez que j'ai changé la ligne de code suivante dans jpeg_corrupt.py :
self.globs = ['*.jpg', '*.jpe', '*.jpeg']
en
self.globs = ['*.jpg', '*.jpe', '*.jpeg', '*.png', '*.gif']
que les fichiers .PNG et .GIF soient également analysés.
Il peut ensuite être exécuté via l'invite de commande Windows (cmd.exe) comme ceci:
C:\Python27\python.exe "C:\Directory containing the .PY file\jpeg_corrupt.py" "C:\Directory of folder to be scanned"
La première partie de la commande, « C: \ Python27 \ python.exe », peut être différente selon la version de Python que vous avez installée et le répertoire dans lequel vous l'avez installé. Dans mon exemple, c'est le répertoire d'installation par défaut de Python 2.7.
Il doit numériser toutes les images JPG, GIF et PNG dans le répertoire spécifié et tous ses sous-répertoires. Il affichera une sortie s'il détecte un fichier image corrompu.
J'ai couru ceci sur l'image de l' échantillon de l' OP et lui a donné ce message d'erreur:
...\YcB9n.png: string index out of range
.Le code peut également être entré dans un fichier de script .BAT, vous pouvez donc l'exécuter facilement dans un répertoire spécifié sans avoir besoin d'utiliser l'invite de commande:
Sources:
[1]: Réponse dans Stack Overflow - "Comment puis-je vérifier par programme si une image (PNG, JPEG ou GIF) est corrompue?" par ChristopheD
[2]: Commentaire de Denilson Sá dans la réponse SO liée dans [1]
la source
J'ai modifié le code de la réponse de galacticninja pour faire exactement ce que voulait OP. Il est exécuté de la même manière, mais il déplacera les fichiers vers un dossier catch dans le
C:\
répertoire racine au lieu de simplement lister les images sur l'invite de commande.Vous pouvez trouver mon code modifié sur Pastebin ou ci-dessous:
la source
Installez imagemagick, si vous êtes sur Mac, vous pouvez utiliser Homebrew.
Ensuite, vous pouvez utiliser ce petit script Python.
Remplacez
/Your/Path/To/Files/
et décommentez la dernière ligne si vous souhaitez supprimer les images corrompues.la source
Utiliser à
identify
partir du package ImageMagick.Exemple d'échantillon:
Et la commande suivante identifierait tous les fichiers JPEG corrompus dans le dossier actuel:
la source
Si Perl est installé, vous pouvez utiliser ce script. Vous devez enregistrer la liste des fichiers à archiver dans f.txt avant d'exécuter le script. Vous pouvez faire cette liste en utilisant Irfanview. (chargez tous les pouces des sous-dossiers et enregistrez-les en txt). La liste des bons fichiers est enregistrée dans okf.txt et les fichiers corrompus sont répertoriés dans brokenf.txt.
=====================
la source
Mon script open source Pyhton vérifier l'intégrité des médias vérifie l'intégrité des images et des fichiers vidéo / audio. Il utilise des modules Pillow, des wrappers ImageMagick et FFmpeg pour essayer de décoder les fichiers.
Oreiller image.verify ne voit pas tous les défauts (par exemple, ignore la troncature) pour cette raison, j'ai également effectué l'image / décodage + manipulation.
la source
Ce billet de blog répertorie cinq outils qui peuvent (détecter et) réparer les fichiers d'image corrompus. Le seul gratuit parmi eux est File Repair 2.1.
la source