Страница 1 из 5

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

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

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


Или, если невозможно проделать это стандартным поиском тотала, может есть какие-то утилиты?

Добавлено: Ср май 14, 2008 15:53
Моторокер
1. При поиске \xFF\xD9$ с включёнными регулярными выражениями вероятность найти битый файл будет больше.

2. Написать контентный плагин для поиска битых файлов.
Будет работать быстрее встроенного поиска, потому как читать будет только конец файла.

Добавлено: Сб май 17, 2008 02:09
plvtor
Поиск по отсутствию FFD9 не полностью все находит, но нашел утилитку для поиска дупликатов картинок, которая еще и проверяет на целосность файлы.

AntiDupl



И еще вопрос по поиску.
Можно ли найти те каталоги в которых НЕ находится определенный файл?

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

Добавлено: Сб май 17, 2008 17:25
Alextp
Написать контентный плагин для поиска
конт. плагин
уже есть: только поля "это бттое изображение" нет.

А утилитка была бы удобнее

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

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

Добавлено: Вс ноя 29, 2009 19:23
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 :::::::::::::::::::::::::

Добавлено: Пн дек 09, 2013 15:09
aLLigator
С поиском по начальному FFD8 и конечному FFD9 тегу JPEG справился с помощью плагина decHEXwdx.
А вот как быть если файл оказался забит нулями в середине файла?

Добавлено: Вт дек 10, 2013 15:16
Skif_off
aLLigator
А чем вас не устраивает батник чуть выше?

Добавлено: Ср фев 05, 2014 00:29
Mailk
Была у меня история такая же (востановление инфы после того как туда уже записали). Решил с помощью контекстного плагина по зачитки разрешения и еще чего то. Вопщем битые картинки не показывали инфу и вуаля сортирнул по этой колонки и перенес кривые. После запустил просмотр экскизов и все эти картинки были пустые (чернота). Вот так за 5 минут сортирнул нескольк тысяч картинок причем в разных директориях их было штук 300 (контр+Б).

Добавлено: Ср фев 05, 2014 16:50
Skif_off
Mailk писал(а):После запустил просмотр экскизов и все эти картинки были пустые (чернота).
Сомнительный критерий, бывают случаи, когда миниатюра цела, а все остальное - битое.
Батник от Tol!k самое оно.

Добавлено: Вт сен 16, 2014 02:53
Skif_off
У меня по-ходу с лыжами что-то, подскажите, пожалуйста, кнопку для скрипта от Tol!k.

Добавлено: Вт сен 16, 2014 09:23
Flasher
Skif_off
На вскидку: убрать путь запуска, положить батник рядом с jpegtran.exe, прописать параметром /S.

Добавлено: Вт сен 16, 2014 17:38
Tol!k
в пути к %tmp% нет пробелов?
не остался ли неудалённый %tmp%\jpgtest.tmp ?
положить батник рядом с jpegtran.exe
надёжнее – в папку, прописанную в %path%

Добавлено: Вт сен 16, 2014 19:42
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 в т.ч.), хотя все файлы создавались где должны.