如何检查一个文件是否是有效的图像文件?
我现在正在使用PIL这个库。
from PIL import Image
try:
im = Image.open(filename)
# do stuff
except IOError:
# filename not an image file
不过,虽然这个库能处理大部分情况,但有些图片文件,比如xcf、svg和psd格式的文件却无法被识别。特别是psd文件,会出现一个叫OverflowError
的错误。
有没有什么办法可以把这些文件也包含进来呢?
11 个回答
56
除了Brian提到的建议,你还可以使用PIL库的verify方法来检查文件是否损坏。
im.verify()
这个方法会尝试判断文件是否损坏,而不需要实际解码图像数据。如果这个方法发现了任何问题,它会抛出相应的错误提示。需要注意的是,这个方法只能在新打开的图像上使用;如果图像已经加载过了,结果就不确定了。此外,如果你在使用这个方法后还需要加载图像,你必须重新打开图像文件。
16
很多时候,文件的前几个字符会是一些特定的数字,这些数字被称为“魔数”,用来表示不同的文件格式。你可以在上面提到的异常检查之外,额外检查一下这些魔数。