如何以编程方式检查图像(PNG、JPEG 或 GIF)是否已损坏?

2022-08-30 20:39:57

好。所以我有大约250,000张高分辨率图像。我想做的是遍历所有这些,找到那些被破坏的人。如果你知道4scrape是什么,那么你就知道图像的性质I。

对我来说,损坏的是图像被加载到Firefox中,它说

The image “such and such image” cannot be displayed, because it contains errors.

现在,我可以选择我所有的250,000张图片(~150gb),然后将它们拖放到Firefox中。不过这很糟糕,因为我不认为Mozilla设计的Firefox可以打开250,000个标签页。不,我需要一种方法来以编程方式检查图像是否已损坏。

有没有人知道PHP或Python库可以沿着这些路线做一些事情?还是Windows的现有软件?

我已经删除了明显损坏的图像(例如0字节的图像),但我大约99.9%确定在我的集合中漂浮着更多病态图像。


答案 1

一个简单的方法是尝试使用PIL(Python图像库)加载和验证文件。

from PIL import Image

v_image = Image.open(file)
v_image.verify()

捕获异常...

文档中

im.verify()

尝试确定文件是否损坏,而不实际解码图像数据。如果此方法发现任何问题,则会引发适当的异常。此方法仅适用于新打开的图像;如果图像已加载,则结果未定义。此外,如果在使用此方法后需要加载映像,则必须重新打开映像文件。


答案 2

我建议你看看图像魔术这个:http://www.imagemagick.org/

在那里,您有一个名为识别的工具,您可以将其与脚本/stdout结合使用,也可以使用提供的编程接口


推荐