我有一个包含大量图片的文件夹,我想将动画 GIF 与非动画 GIF 进行排序并将动画 GIF 移至新文件夹。尝试使用类似视图和观看视频对于 Windows,但他们没有这个选项[http://newsgroup.xnview.com/viewtopic.php?f=82&t=31485] 还尝试了这个:如何将 GIF 文件夹分为动画和静态但图像魔法 命令仅适用于一张图片,但文件太多,无法逐一进行操作。
答案1
Exif工具简直太神奇了,而且威力巨大:
exiftool -if "$FrameCount > 0" -directory=Animated *.gif
答案2
要过滤掉动画 GIF,您需要搜索包含多帧的 GIF 文件。每帧都以“图形控制扩展”块带有十六进制签名21 F9 04
。因此,您必须搜索具有两次或更多次此签名的 .gif 文件。这些文件通常是动画 GIF。
这种通用方法应该适用于任何支持某种二进制搜索和通配符的工具。这也意味着许多支持正则表达式的工具应该可以用这个表达式找到动画 gif 文件:
\x00\x21\xf9\x04.*\x00\x21\xf9\x04
- 首先我尝试了我最喜欢的文件管理器总指挥官,但遗憾的是提供的正则表达式引擎不支持多行搜索,所以它不起作用。
- 瑞士锉刀(sfk):查找驱动器 C 上的所有动画 GIF:
sfk xfind -firsthit -pat "/\x21\xf9\x04[4 bytes]\x00**\x21\xf9\x04/" -dir c:\ -file .gif | findstr ":file"
- 自由指挥官在其“搜索文件”对话框中支持上述正则表达式(高级模式)
- 电力GREP还可以使用“搜索二进制文件”和“点匹配换行符”选项查找动画 GIF
- 用于 Windows 的 Grep:
grep -Pl "(?s)\x00\x21\xf9\x04.*\x00\x21\xf9\x04" *.gif
答案3
这可能与您想要的不同,但它的工作原理足够简单:使用图像查看器,例如可在以下网址获得的 FastStone Image Viewer(我使用便携版):
http://www.faststone.org/FSViewerDownload.htm
为动态 gif 图像创建一个文件夹。
观察查看器中的 gif 图像,轻松区分运动和非运动 gif。使用查看器浏览图像时,在 Windows 文件资源管理器中对每个运动 gif 使用 Shift + 右键单击选择 gif 图像。
选择完所有动态 gif 图像后,使用 Ctrl + X 进行剪切,然后进入动态 gif 文件夹并使用 Ctrl + V 将它们粘贴到文件夹中。
就是这样了,尽管这也是摆脱一些过时图像的好时机。
标记ID