文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python利用pillow判断图片完整

2023-01-31 03:28

关注

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	


相关阅读:

1、Image.verify

2、Open PIL image from byte file

3、如何判断JPG文件下载完整了?

4、Pillow生成gif文件大小问题:Gif image size problem

5、Pillow中的 GIF87a or GIF89a

6、Pillow中文文档


*** walker ***


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯