前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python利用pillow判断图片完整

Python利用pillow判断图片完整

作者头像
py3study
发布2020-01-08 18:35:30
1.7K0
发布2020-01-08 18:35:30
举报
文章被收录于专栏:python3python3

1、安装第三方库。

代码语言:javascript
复制
pip install pillow

2、函数示例。

代码语言:javascript
复制
#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。

代码语言:javascript
复制
# 处理一张图片
# 正常返回 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	
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档