Python利用pillow判断图片完整性
#encoding: utf-8#author: walker
#date: 2016-07-26
#summary: 判断图片的有效性
import io
import imghdr
from os import PathLike
from PIL import Image
#判断文件是否为有效(完整)的图片
#输入参数为文件路径,或文件对象
def IsValidImage(file):
bValid = True
if isinstance(file, (str, PathLike)):
fileObj = open(file, 'rb')
else:
fileObj = file
buf = fileObj.read()
if buf in (b'JFIF', b'Exif'): #jpg图片
if not buf.rstrip(b'\0\r\n').endswith(b'\xff\xd9'):
bValid = False
else:
try:
Image.open(fileObj).verify()
except:
bValid = False
return bValid
#判断文件是否为有效(完整)的图片
#输入参数为bytes,如网络请求返回的二进制数据
def IsValidImage4Bytes(buf):
bValid = True
try:
Image.open(io.BytesIO(buf)).verify()
except:
bValid = False
return bValid
#判断文件是否为有效(完整)的图片
#输入参数为bytes,如网络请求返回的二进制数据
def IsValidImage4Bytes(buf):
bValid = True
if buf in (b'JFIF', b'Exif'): #jpg图片
if not buf.rstrip(b'\0\r\n').endswith(b'\xff\xd9'):
bValid = False
else:
try:
Image.open(io.BytesIO(buf)).verify()
except:
bValid = False
return bValid
页:
[1]