Как сортировать анимированные GIF из не анимированных GIF?

1146
Ventolinmono

У меня есть папка с большим количеством изображений, и я хочу отсортировать анимированные GIF-файлы из неанимированных GIF-файлов и переместить анимированные GIF-файлы в новую папку. Пробовал с программным обеспечением, таким как XnView и XnViewMp для Windows, но у них нет этой опции [ http://newsgroup.xnview.com/viewtopic.php?f=82&t=31485 ]. Также попытался это: Как разделить папку GIFs в анимированные и статические, но Волшебное изображение команды для одного изображения, и есть слишком много файлов, чтобы сделать это один на один.

6

3 ответа на вопрос

4
splash

Чтобы отфильтровать анимированные GIF-файлы, необходимо выполнить поиск GIF-файлов с несколькими кадрами. Каждый кадр начинается с блока «Расширение управления графикой» с шестнадцатеричной подписью 21 F9 04. Таким образом, вы должны искать .gif файлы с двумя или более экземплярами этой подписи. Это должны быть, как правило, анимированные GIF-файлы.

Этот общий подход должен работать с любым инструментом, который поддерживает некоторый бинарный поиск вместе с подстановочными знаками. Это также означает, что многие инструменты с поддержкой регулярных выражений должны находить анимированные GIF-файлы с этим выражением:

\x00\x21\xf9\x04.*\x00\x21\xf9\x04 
  • Сначала я попробовал мой любимый файловый менеджер Total Commander, но, к сожалению, предоставленный движок регулярных выражений не поддерживает многострочный поиск и не работает.
  • Swiss File Knife (sfk): найдите все анимированные GIF-файлы на диске C:
    sfk xfind -firsthit -pat "/\x21\xf9\x04[4 bytes]\x00**\x21\xf9\x04/" -dir c:\ -file .gif | findstr ":file"
  • FreeCommander поддерживает приведенное выше регулярное выражение в своем диалоге «Поиск файлов» (расширенный режим)
  • PowerGREP также находит анимированные GIF-файлы с параметрами «Поиск по двоичным файлам» и «Точка соответствует новым строкам»
  • Grep для Windows :grep -Pl "(?s)\x00\x21\xf9\x04.*\x00\x21\xf9\x04" *.gif
Это ** регулярное выражение ** для _Swiss File Knife_ не находит все анимированные GIF-изображения. Затем я удалил все анимированные GIF-файлы в этой папке с помощью: `sfk xfind -firsthit. "/ \ x00 \ x21 \ xf9 \ x04 [4 байта] \ x00 ** \ x21 \ xf9 \ x04 /" + del -yes | findstr ": file" `, но остаются некоторые GIF-файлы, которые являются анимированными. Не пробовал FreeCommander и PowerGREP, потому что они не являются свободными программами и не получили быстрых результатов с Grep для Windows или GrepWin (я не знаю, как выполнить grep). Ventolinmono 9 лет назад 0
Также очень важно, используя это выражение в папке, которая имеет другие типы, она возвращает файлы, такие как .exe или .dll. Так что я думаю, что это не эксклюзивно для файлов GIF. Ventolinmono 9 лет назад 0
@Ventolinmono Вы можете просто добавить шаблон файла командой sfk для поиска только файлов .gif. Конечно ** Free ** Commander бесплатный, поэтому и называется так, как есть. Для _grep_ у ответа есть рабочий пример, поэтому я не понимаю, почему вы не знаете, как его использовать. splash 9 лет назад 0
@Ventolinmono Не удивительно, что шаблон регулярного выражения также встречается в других двоичных файлах. Вот почему вы должны использовать маску файла. splash 9 лет назад 0
3
Karan

ExifTool is simply amazing and immensely powerful:

exiftool -if "$FrameCount > 0" -directory=Animated *.gif 
** Удивительно! ** Это делает работу очень легко. Ventolinmono 9 лет назад 0
Да, это здорово, не так ли? Я использую его в течение долгого времени (в основном для редактирования / удаления метаданных JPEG) и до сих пор открываю для себя новые функции и регулярно использую. Кроме того, разработчик (физик-ядерщик и программист) чрезвычайно полезен, поэтому, если у вас возникнут какие-либо трудности, просто оставьте сообщение на форуме (или здесь, на SU :). Karan 9 лет назад 0
0
MarkinID

This may different than what you are looking for, but it works simply enough: Use an image viewer such as FastStone Image Viewer available at (I use the portable version.):

http://www.faststone.org/FSViewerDownload.htm

Make a folder for the motion gif images.

Observe the gif images in the viewer to easily differentiate between motion and non-motion gifs. As you go through the images with the viewer select the gif images in Windows File Explorer using Shift + Right Click for each motion gif.

When you are done selecting all the motion gif images use Ctrl + X to cut then go into your motion gif folder and use Ctrl + V to paste them into the folder.

That's it, although it is also a good time to get rid of some obsolete images.

MarkinID

Похожие вопросы