1、安装第三方库。
pip install pillow
2、函数示例。
#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[6:10] 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[6:10] 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
3、转图片格式为jpg。
# 处理一张图片 # 正常返回 True;异常返回 False def Img2Jpg(srcFile, dstFile): print('Img2Jpg %s ...' % srcFile) exMsg = '' try: srcImg = Image.open(srcFile) dstImg = srcImg.resize((108, 150), Image.ANTIALIAS).convert('RGB') dstImg.save(dstFile, 'JPEG') except: exMsg = '* %s' % traceback.format_exc() print(exMsg) if exMsg: return False return True # 网络版(bytes) # 处理一张图片 # 正常返回 True;异常返回 False def Img2Jpg(buf, dstFile): print('Img2Jpg %s ...' % srcFile) exMsg = '' try: srcImg = Image.open(io.BytesIO(buf)) dstImg = srcImg.resize((108, 150), Image.ANTIALIAS).convert('RGB') dstImg.save(dstFile, 'JPEG') except: exMsg = '* %s' % traceback.format_exc() print(exMsg) if exMsg: return False return True
相关阅读:
2、Open PIL image from byte file
4、Pillow生成gif文件大小问题:Gif image size problem
*** walker ***