Кто-нибудь знает способ проверки графических файлов (в частности, JPEG, GIF и PNG) на наличие повреждений (желательно автоматическим способом)?
Объяснение:
Несколько дней назад команда работала некорректно и закончила тем, что удалила тысячи графических файлов с тома FAT32, на котором практически не осталось места. Я использовал несколько разных программ для восстановления файлов / фотографий, но, естественно, они ограничены в том, сколько они могут восстановить (хотя, к счастью, том имеет кластеры 8 КБ, что несколько помогает).
Во всяком случае, некоторые большие файлы, которые были фрагментированы, теперь повреждены. Некоторые из них вообще не являются настоящими файлами (программное обеспечение для восстановления просто сбрасывает кластеры, на которые указывают перезаписанные записи каталога), в то время как другие ломаются из-за фрагментации.
Более того, поскольку некоторые форматы изображений включают уменьшенную версию изображения в виде миниатюры, сканирование миниатюр на предмет повреждения не является надежным, поскольку оно может быть целым, в то время как фактический файл (т. Е. Изображение при просмотре в полном размере) может быть поврежден.
Вот пара примеров:
Вот второй. Он настолько поврежден, что ничего не отображает.
(Третий даже не загружается, потому что у него нет правильного заголовка!)
источник
Ответы:
Поскольку я наткнулся на это, пытаясь ответить на тот же вопрос, я добавлю еще одно замечательное решение, которое я нашел:
Бад Пегги
Использование
В меню выберите,
File > Scan
а затем используйте диалоговое окно файла, чтобы перейти к папке, в которой находятся изображения. Затем программа начнет сканирование папки и всех вложенных папок на наличие изображений (.jpg, .png, .bmp, .gif). Если вы хотите отсканировать много изображений, это займет некоторое время, поскольку программе необходимо полностью загрузить и проанализировать файл изображения, поэтому вы можете захотеть запустить его в одночасье.Во время сканирования будет отображаться процент выполнения в строке состояния. Любые изображения, которые он считает неидеальными, будут отображаться непосредственно в списке. Если вы нажмете любое изображение в списке, оно покажет предварительный просмотр того, как изображение выглядит. Довольно часто изображение будет иметь незначительные проблемы с форматом файла, и изображение будет выглядеть хорошо. В других случаях изображение не будет отображаться вообще, а предварительный просмотр будет просто черным. Иногда изображение будет повреждено, и вы увидите что-то похожее на скриншот выше.
Очень полезный трюк - клик в заголовке столбца,
Reason
и изображения будут отсортированы в зависимости от степени их повреждения (например, все плохие форматы файлов, которые по-прежнему правильно отображаются, будут перемещены в нижнюю часть, что позволит вам сосредоточиться на более серьезных случаях). ,Кроме того, если первое сканирование завершено, и вы начинаете другое сканирование, результаты будут просто добавлены в список. Таким образом, если у вас есть много разных папок с изображениями, вы можете просто сканировать их последовательно без очистки списка при запуске нового сканирования. Если вы хотите, чтобы список очистился, используйте контекстное меню и нажмите
Clear list
.Ссылки
для загрузки для Windows, Linux и OS X можно найти здесь:
https://www.coderslagoon.com
Исходный код здесь:
https://github.com/llaith/BadPeggy
источник
Попробуйте jpeginfo '
-c
' для ваших файлов JPEG.Я видел, что коррупция, которую вы показываете, случается и с плохими картами памяти.
То, что вы хотите, должно быть возможным и доступным, проверьте « Повреждение графических файлов» ;
раздел из онлайн- энциклопедии графических форматов файлов .
Также см. Проверка целостности файлов в Основном введении в функции PNG .
Возможно, вас заинтересует вопрос Stackoverflow:
как программно проверить, не повреждено ли изображение (PNG, JPEG или GIF) ?
Обновление : Источник тарбол для версии 1.6.1 от Timo Кокконны .
Вы должны быть в состоянии построить двоичный файл для вашей машины.
источник
jpeginfo -c *.JPG | ag (WARNING|ERROR)
работал для меняПрограмма идентификации ImageMagick сообщит вам, повреждено ли изображение. Циклическое тестирование «for i in find» для кода возврата none-0 из идентификатора позволит вам довольно легко выполнить сценарий теста, чтобы вывести список поврежденных или поврежденных файлов. Он работает на Windows с PowerShell тоже.
Следующий код с изменениями для вашего пути хорошо работает в powershell
источник
identify
может отображать поврежденные данные JPEG с помощью-verbose
, обычно они не отображаются.Это может быть сделано с помощью Python Imaging Library в
.verify()
команду . [1]Чтобы запустить это в Windows, установите Python (я установил текущую последнюю версию Python 2), а затем установите Pillow (форк Python Imaging Library (PIL)). Затем скопируйте код jpeg_corrupt.py [2] и сохраните его содержимое в файле .PY, например, jpeg_corrupt.py.
Обратите внимание, что я изменил следующую строку кода в jpeg_corrupt.py :
self.globs = ['*.jpg', '*.jpe', '*.jpeg']
на
self.globs = ['*.jpg', '*.jpe', '*.jpeg', '*.png', '*.gif']
Это так, что файлы .PNG и .GIF также будут сканироваться.
Затем он может быть выполнен через командную строку Windows (cmd.exe) следующим образом:
C:\Python27\python.exe "C:\Directory containing the .PY file\jpeg_corrupt.py" "C:\Directory of folder to be scanned"
Первая часть команды, C: \ Python27 \ python.exe , может отличаться в зависимости от того, какую версию Python вы установили и в какой каталог вы его установили. В моем примере это установочный каталог по умолчанию Python 2.7.
Он должен сканировать все изображения JPG, GIF и PNG в указанном каталоге и все его подкаталоги. Он покажет вывод, если обнаружит поврежденный файл изображения.
Я побежал это на образце изображения OP и это дало это сообщение об ошибке:
...\YcB9n.png: string index out of range
.Код также может быть введен в файл сценария .BAT, так что вы можете легко запустить его в указанном каталоге, не используя командную строку:
Источники:
[1]: Ответ в переполнении стека: «Как программно проверить, не повреждено ли изображение (PNG, JPEG или GIF)?» ChristopheD
[2]: Комментарий Денилсона Са в ответе SO, связанном в [1]
источник
Я изменил код из ответа galacticninja, чтобы сделать именно то, что хотел OP. Он запускается таким же образом, однако он будет перемещать файлы в папку catch в корневом
C:\
каталоге, а не просто перечислять изображения в командной строке.Вы можете найти мой модифицированный код на Pastebin или ниже:
источник
Установите imagemagick, если вы на Mac, вы можете использовать Homebrew.
Тогда вы можете использовать этот маленький скрипт Python.
Замените
/Your/Path/To/Files/
и раскомментируйте последнюю строку, если вы хотите удалить поврежденные изображения.источник
Используйте
identify
из пакета ImageMagick.Пример примера:
И следующая команда идентифицирует все поврежденные файлы JPEG в текущей папке:
источник
Если у вас установлен Perl, вы можете использовать этот скрипт. Вам нужно сохранить список файлов для проверки в f.txt перед запуском скрипта. Вы можете сделать этот список, используя Irfanview. (загрузить все большие пальцы из подпапок и сохранить в TXT). Список хороших файлов сохраняется в okf.txt, а поврежденные файлы перечислены в brokenf.txt.
=====================
источник
Мой скрипт с открытым исходным кодом Pyhton check-media-целостности проверяет целостность изображений и видео / аудио файлов. Он использует модули Pillow, обертки ImageMagick и FFmpeg, чтобы попытаться расшифровать файлы.
Подушка image.verify не видит все дефекты (например, игнорирует усечение), поэтому я также выполнил манипуляции с изображением / декодированием +.
источник
В этом блоге перечислены пять инструментов, которые могут (обнаруживать и восстанавливать ) поврежденные файлы изображений. Единственным бесплатным среди них является File Repair 2.1.
источник