1 两种pic加载方式转换base64
# 一个正确的写法
trans_img = base64.b64encode(open(r'./123456.png', 'rb').read())
print(type(trans_img))
print(trans_img)
>>> <class 'bytes'>
>>> b'iVBORw0KGgo ...... jwv8YQUAAAAJcEhZcwAAFiUA'
# 一个错误的写法
img = cv2.imread("./data/moremoremore/123456.png")
trans_img = base64.b64encode(img).decode()
print(type(trans_img))
print(trans_img)
print('*'*20)
>>> r6+vr6+vr6+vr6+vr6+vr6+vr6+ ..... r6+vr6+vr6+vr6+vr6+vr6+vr6+
>>> ********************
2 np数组与base64互转
代码来源:http://t.csdn.cn/C9Pxg
import cv2
import base64
import numpy as np
def np2base64(npimg):
img_str = cv2.imencode('.jpg', npimg)[1].tostring() # 将图片编码成流数据,放到内存缓存中,然后转化成string格式
b64_code = base64.b64encode(img_str)
data = str(b64_code, 'utf-8')
return data
def base64ToNp(image_base64):
decodeImg = base64.b64decode(image_base64)
basenp = np.frombuffer(decodeImg, dtype=np.uint8)
frame = cv2.imdecode(basenp, cv2.IMREAD_COLOR)
return frame
npimg = cv2.imread("3draw.jpg")
image_base64 = np2base64(npimg)
img = base64ToNp(image_base64)
cv2.imwrite("img.jpg", img)