Matthewl 发表于 2018-8-5 08:38:12

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]
查看完整版本: Python利用pillow判断图片完整性