我有一段摄像头视频流记录的超过2000张图片(用于制作时间轴视频),我需要删除所有不完整或损坏的图片,然后将其传递给一个php-gd脚本以编辑它们用于最终视频。
是否可能使用imagemagick或其他工具检测损坏的文件?如果我尝试使用feh打开损坏的图像,控制台显示“libpng error:Read Error”
谢谢!
更新:似乎建议使用identify方法在我的情况下可以接受糟糕的图像。这是一个损坏的示例http://imgur.com/YcB9n
我有一段摄像头视频流记录的超过2000张图片(用于制作时间轴视频),我需要删除所有不完整或损坏的图片,然后将其传递给一个php-gd脚本以编辑它们用于最终视频。
是否可能使用imagemagick或其他工具检测损坏的文件?如果我尝试使用feh打开损坏的图像,控制台显示“libpng error:Read Error”
谢谢!
更新:似乎建议使用identify方法在我的情况下可以接受糟糕的图像。这是一个损坏的示例http://imgur.com/YcB9n
尝试使用ImageMagick的identify
命令。从它的man页面可以看到:
Identify描述了一个或多个图像文件的格式和特性。如果图像不完整或损坏,它也会报告。
示例:
$ identify foo.png
identify: NotAPNGImageFile (foo.png).
$ echo $?
1
另一种选择是使用 PIL (Python Imaging Library):
from PIL import Image
im = Image.open("foo.png")
im.verify()
从文档中获取:
im.verify()
尝试确定文件是否损坏,而不实际解码图像数据。 如果此方法发现任何问题,则引发适当的异常。 此方法仅适用于新打开的图像; 如果图像已经被加载,则结果未定义。 另外,如果您需要在使用此方法后加载图像,则必须重新打开图像文件。
identify
命令行。非常感谢!你救了我的屁股! - Atcold我尝试对一个包含多种损坏的jpg文件运行ImageMagick的identify
命令。它能够识别一些,但不是全部,所以这可能只是一个部分解决方案而已,但您可以尝试以下方法:
for f in *.JPG ; do identify $f > /dev/null || echo $f >> /tmp/fail ; done ; cat /tmp/fail