图片的编码与解码

这篇博客详细介绍了四种不同的方法来实现Python中图片的编码和解码操作,包括各自的过程和步骤,覆盖了从基础到进阶的实用技巧。

方法1

编码

import base64
from io import BytesIO
from PIL import Image

def loadimg(imgpath):
	"""
    加载图片
    """
    return Image.open(imgpath)

def image_to_base64(imgpath):
    """
    将打开后的图片转换为base64格式输出
    """
    image = loadimg(imgpath)
    buff = BytesIO()
    image.save(buff,format="JPEG")
    
    imagedata = base64.b64encode(buff.getvalue())
    imgbase64= imagedata.decode()
    
    return imgbase64

解码

def base64_to_image(imagebase64):
    """
    输入base64,输出图片
    """
    try:
    	imgbase64= base64.b64decode(imagebase64)  #此步返回的是Byte对象,将此步骤移至编码函数中,将形成方法2
        image = Image.open(BytesIO(imgbase64))
        return image
    except:
        print("输入图片必须是BASE64格式...")

方法2

编码

import base64
from io import BytesIO
from PIL import Image

def loadimg(imgpath):
	"""
    加载图片
    """
    return Image.open(imgpath)

def image_to_base64(imgpath):
    """
    将打开后的图片转换为base二进制流格式输出
    """
    image = loadimg(imgpath)
    buff = BytesIO()
    image.save(buff,format="JPEG")
    
    imagedata = base64.b64encode(buff.getvalue())
    imagedata = imagedata.decode()
    img = base64.b64decode(imagedata)    # 返回Byte对象
    
    return img

解码

def base64_to_image(imagebase64):
    """
    输入base二进制流图片,输出图片
    """
    try:
        image = Image.open(BytesIO(imagebase64))
        return image
    except:
        print("输入图片必须是二进制流格式...")

方法3

编码

import base64

def image_to_base64(imagefile,imagetype="BASE"):
    """
    输入图片文件,以base二进制流格式输出
    """
    with open(imagefile, "rb") as f:
        imagedata = f.read()
    
    imagedata = base64.b64encode(imagedata)
    imagedata = imagedata.decode()
    image = base64.b64decode(imagedata)
    return image,imagetype

解码

def base64_to_image(imagebase64):
    """
    输入base二进制流图片,输出图片
    """
    try:
        image = Image.open(BytesIO(imagebase64))
        return image
    except:
        print("输入图片必须是二进制流格式...")

方法4

编码

def image_to_base64(image):
    """
    将图片转换为base64格式
    """
    
    buff = BytesIO()
    
    image.save(buff,format="JPEG")
    imagedata = base64.b64encode(buff.getvalue())
    imgbase64 = imagedata.decode()

    return imgbase64

解码

def base64_to_image(imagebase64):
    """
    输入base64图片,输出图片
    """
    try:
        imgbase64= base64.b64decode(imagebase64)
        buf_str = BytesIO(imgbase64).getvalue()
        nparr = np.fromstring(buf_str, np.uint8)
        img = cv2.imdecode(nparr, 1)
        
        return img
    except:
        print("输入图片必须是BASE64格式...")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

great-wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值