python3 base64 图像编-解码

该编解码方式可用于http协议 json传输。

import base64
import numpy as np
import cv2.cv2 as cv2

########解码
# image = base64.b64decode(img)
# nparr = np.fromstring(image, np.uint8)
# frame = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

########编码
#
# frame = cv2.imread("img.png")
# image = cv2.imencode('.jpg', frame)[1]
# image_code = str(base64.b64encode(image))[2:-1]
# print(image_code)

其他处理方式参考


import numpy as np
import cv2
from PIL import Image
import base64
from io import BytesIO

# 从文件读取并转为base64编码
def img2str(img_path:str):
	img = cv2.imread(img_path)
    img_data = cv2.imencode('.jpg', img)[1].tobytes()  
    # 将图片编码成流数据,放到内存缓存中,然后转化成string格式
    base64_data = base64.b64encode(img_data)
    img_base64 = str(base64_data, encoding='utf-8')
    return img_base64

# 从 array 将图像编码(直接编码即可,去掉读取那一步)
def array2str(img_np:np.array):
	img_data = cv2.imencode('.jpg', img)[1].tobytes()  
    # 将图片编码成流数据,放到内存缓存中,然后转化成string格式
    base64_data = base64.b64encode(img_data)
    img_base64 = str(base64_data, encoding='utf-8')
    return img_base64

# 读取编码后的图像字符串并转回图像
def str2img(img_str: str):
	# base64 解码图像字符串
    img_bs64 = base64.b64decode(img_str)
    # 使用 pillow Image读取byte流
    #(这里我试过用np 和 cv2 都不好用,用cv2会丢失维度信息)
    pil_img = Image.open(BytesIO(img_bs64))
    # 转为array 格式
    img_rgb = np.asarray(pil_img)
    # 把bgr 转为 rgb
    img_bgr = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2RGB)
    return img_bgr



参考文章

  • https://blog.csdn.net/qq_15821487/article/details/125705745
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值