python 多种图片数据格式 numpy、bytes、base64 互转
import cv2
import numpy as np
import base64
from PIL import Image
import matplotlib.pyplot as plt
img1 = Image.open(r"C:\Users\xiahuadong\Pictures\风景\2.jpg")
print(img1)
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x313 at 0x1FE74AECC70>
plt.figure(figsize=(5, 5))
plt.imshow(img1)
plt.show()
![在这里插入图片描述](https://img-blog.csdnimg.cn/116f24ec1030407d8c2e594b41262218.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSP5Y2O5Lic55qE5Y2a5a6i,size_14,color_FFFFFF,t_70,g_se,x_16#pic_center)
img_numpy = np.array(img1)
print(img_numpy.shape)
(313, 500, 3)
data = cv2.imencode('.jpg', img_numpy)[1]
image_bytes = data.tobytes()
image_base64 = base64.b64encode(image_bytes).decode('utf8')
print(len(image_base64))
99068
image_bytes = base64.b64decode(image_base64)
image_numpy1 = np.frombuffer(image_bytes, dtype=np.uint8)
image_numpy2 = cv2.imdecode(image_numpy1, cv2.IMREAD_COLOR)
print(image_numpy2.shape)
(313, 500, 3)
data = cv2.imencode('.jpg', img_numpy)[1]
image_bytes = data.tobytes()
print(len(image_bytes))
74299
image_numpy1 = np.frombuffer(image_bytes, dtype=np.uint8)
image_numpy2 = cv2.imdecode(image_numpy1, cv2.IMREAD_COLOR)
print(image_numpy2.shape)
(313, 500, 3)
image_bytes = base64.b64decode(image_base64)
print(len(image_bytes))
74299
image_base64 = base64.b64encode(image_bytes).decode('utf8')
print(len(image_base64))
99068