2017-09-15 10:30:33

python验证jpg文件是否完整

有时候写爬虫下载图片,一般图片很多都是jpg格式的。有时候爬虫程序下载jpg文件会中断,所以需要判断jpg文件是否完整,如果不完整需要重新下载。

python本身提供了一种办法来验证图片是否完整:

def IsValidImage(pathfile):
bValid = True
try:
    Image.open(pathfile).verify()
except:
    bValid = False
return bValid

不过这种办法我找完整的图片来试验也会误判,而且误判率奇高。

所以可以有另外一个办法,很简单,根据jpg文件的格式最后两个字节是一般是固定的来判断。

不过这个也有一定的误判,不过误判率比较低,8000个有10来个误判,这样也够了。

下面是示例:

def is_valid_jpg(jpg_file):  
    if jpg_file.split('.')[-1].lower() == 'jpg':  
        with open(jpg_file, 'rb') as f:  
            f.seek(-2, 2)  
            l2 = f.read()
            print(l2)
            return l2 == b'\xff\xd9'  
    else:  
        return True  

if __name__ == "__main__"
print(is_valid_jpg(r"G:\pic\games\tt.jpg"))

Permanent link of this article:http://nulls.cc/post/python_check_jpg_complete

-- EOF --