Поиск недокачанных изображений

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Моторокер, Avada, CaptainFlint, Nik, d-view

plvtor
Сообщения: 11
Зарегистрирован: Вс ноя 11, 2007 00:55

Поиск недокачанных изображений

Сообщение plvtor »

Как и чем можно произвести поиск "битых" картинок (jpg, gif), по каким критериям можно оценить, что у файла нет конца ?

Если для html достаточным условием будет поиск по /html c опцией "файл НЕ включает".
То для JPG, несмотря на то что у него вроде есть постоянные завершающие символы FF D9 (hex), но в бинарной структире они могут встречаться не только в конце.


Или, если невозможно проделать это стандартным поиском тотала, может есть какие-то утилиты?
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

1. При поиске \xFF\xD9$ с включёнными регулярными выражениями вероятность найти битый файл будет больше.

2. Написать контентный плагин для поиска битых файлов.
Будет работать быстрее встроенного поиска, потому как читать будет только конец файла.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
plvtor
Сообщения: 11
Зарегистрирован: Вс ноя 11, 2007 00:55

Сообщение plvtor »

Поиск по отсутствию FFD9 не полностью все находит, но нашел утилитку для поиска дупликатов картинок, которая еще и проверяет на целосность файлы.

AntiDupl



И еще вопрос по поиску.
Можно ли найти те каталоги в которых НЕ находится определенный файл?
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

И еще вопрос по поиску.
Можно ли найти те каталоги в которых НЕ находится определенный файл?
Всторенными средствами, вроде бы, нет.
Я написал пожелание для плагина DirSizeCalc. Посмотрим, что скажет автор.
Также, думаю, эту задачу можно реализовать с помощью Script content plugin.
EDIT:
Это, вроде, как раз то, что нужно:
http://forum.wincmd.ru/viewtopic.php?t=9139
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

Написать контентный плагин для поиска
конт. плагин
уже есть: только поля "это бттое изображение" нет.

А утилитка была бы удобнее
swr
Сообщения: 59
Зарегистрирован: Чт июн 07, 2007 00:41

Сообщение swr »

AntiDupl опять же не находит все битые изображения, простая проверка, захожу в каталог вижу 2000 изображений, открываю одно любое XnView-ом, перехожу в режим просмотра экскизов, Вид - открытками, XnView начинает к(х)ешировать изображения, и создает открытки (экскизы) только для тех, которые он читает, а нечитаемые просто непоказывает.

В этом же каталоге, создаю папку с произвольным именем, кидаю туда, все отк(х)ешированные XnView-ом файлы, переключаюсь на тотал, и вижу всё, что не смог XnView прочитать, тоесть это наши недокачанные файлы, и тут приходит понимание что AntiDupl не панацея.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »


::::::::::::::::::::::::: jpgtest.cmd :::::::::::::::::::::::::
@echo off &chcp 1251 >nul
setlocal enableextensions

rem Тест с логом JPEG-файлов с ошибками. Используется jpegtran.exe
rem Параметры: /S - тест файлов в подкаталогах
rem Автор: Tol!k
rem Файл jpgerror.txt содержит строки
rem Not a JPEG file:
rem Corrupt JPEG data:
rem Premature end of
rem Empty input file
rem Invalid JPEG file structure:
rem JPEG datastream contains no image

set "jpg=*.jpg *.jpeg *.jpe"
if /i "%1"=="/s" (set "subdir=/s") else set "subdir="
if exist %tmp%\jpgtest.tmp exit /b
dir %jpg% /b %subdir% >%tmp%\jpgtest.tmp

set "err=%~dp0\jpgerror.txt"
if not exist "%err%" (
echo Not a JPEG file:>"%err%"
echo Corrupt JPEG data:>>"%err%"
echo Premature end of>>"%err%"
echo Empty input file>>"%err%"
echo Invalid JPEG file structure:>>"%err%"
echo JPEG datastream contains no image>>"%err%"
)
for /f "delims=" %%f in (%tmp%\jpgtest.tmp) do (
title %%f
jpegtran.exe -optimize "%%f" %tmp%\testtmp.jpg 2>&1|findstr /g:"%err%" &&(
echo %%f &echo.
echo %%f>>jpgerror.lst
)
)
title Done.
del /q %tmp%\testtmp.jpg
if exist jpgerror.lst (
echo JPEG-файлы с ошибками:
type jpgerror.lst |more
) else echo OK.
del /q %tmp%\jpgtest.tmp
pause &exit /b
::::::::::::::::::::::::: jpgtest.cmd :::::::::::::::::::::::::
Аватара пользователя
aLLigator
Сообщения: 167
Зарегистрирован: Чт дек 01, 2011 11:21
Откуда: из тех ворот, что и весь народ...

Сообщение aLLigator »

С поиском по начальному FFD8 и конечному FFD9 тегу JPEG справился с помощью плагина decHEXwdx.
А вот как быть если файл оказался забит нулями в середине файла?
Skif_off
Сообщения: 1257
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

aLLigator
А чем вас не устраивает батник чуть выше?
Mailk
Сообщения: 251
Зарегистрирован: Сб янв 16, 2010 20:19

Сообщение Mailk »

Была у меня история такая же (востановление инфы после того как туда уже записали). Решил с помощью контекстного плагина по зачитки разрешения и еще чего то. Вопщем битые картинки не показывали инфу и вуаля сортирнул по этой колонки и перенес кривые. После запустил просмотр экскизов и все эти картинки были пустые (чернота). Вот так за 5 минут сортирнул нескольк тысяч картинок причем в разных директориях их было штук 300 (контр+Б).
Skif_off
Сообщения: 1257
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Mailk писал(а):После запустил просмотр экскизов и все эти картинки были пустые (чернота).
Сомнительный критерий, бывают случаи, когда миниатюра цела, а все остальное - битое.
Батник от Tol!k самое оно.
Skif_off
Сообщения: 1257
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

У меня по-ходу с лыжами что-то, подскажите, пожалуйста, кнопку для скрипта от Tol!k.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off
На вскидку: убрать путь запуска, положить батник рядом с jpegtran.exe, прописать параметром /S.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

в пути к %tmp% нет пробелов?
не остался ли неудалённый %tmp%\jpgtest.tmp ?
положить батник рядом с jpegtran.exe
надёжнее – в папку, прописанную в %path%
Skif_off
Сообщения: 1257
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher, а путь к файлам как передать? :)

Tol!k
С %tmp% вроде нет проблем, перед запуском проверял, при необходимости удалял %tmp%\jpgtest.tmp вручную.

Как правильно передать параметры в кнопке? В поле параметров %P%N для одного файла и /S "%P" для рекурсивной обработки пачки, так?
Не срабатывает. Тестовый файл или один из пачки калечил в Hex-редакторе. Точно помню, что работало :), даже в теме восстановления инфы на руборде писал, чего не стал бы делать без проверки.
Пара мыслей:
1. Дело в версии jpegtran.exe, который я успел обновить до актуальной везде, где используется. Нагуглил и накачал из разных мест архивы с 2011 по 2014 гг., но пока не проверил. Хотя jpegtran.exe /? штатно срабатывает.
2. Есть вероятность, что дело в WinPE, несколько раз замечал, что батники, пользующие %temp%/%tmp% косячат иногда, как будто не всегда "понимают" где, собственно, находятся переменные или криво раскрываются (%~dp0 в т.ч.), хотя все файлы создавались где должны.
Ответить