# encoding:utf-8
import matplotlib.pyplot as plt
import cv2
from io import BytesIO
import base64
# 二进制读取图片,再将图片转为 base64 类型的字符串
with open('coin.jpg', 'rb') as fin: #第一个参数为图片全路径或相对路径
print('二进制类型')
image_data = fin.read()
# 图片:二进制类型
print(image_data)
# 将二进制图片编码为 base64 格式
print('二进制类型--转--bytes类型')
base64_data_bytes = base64.b64encode(image_data)
# 图片:bytes类型
print(base64_data_bytes)
# 在Python3以后,字符串和bytes类型彻底分开了。字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。
# 在 Python3 中,bytes和str的互相转换方式是
# str.encode('utf-8') bytes.decode('utf-8')
print('bytes类型--转--str类型')
base64_data_str= base64_data_bytes.decode()
# 图片:str类型
print(base64_data_str)
######################################################################
print('上面将图片转为字符串----下面再将此字符串转为图片')
print('通过打印str类型,再将其赋给一个变量,则这个变量就表示一张图片的str类型')
print('str类型表示会很长,可以用于pythonn使用PyInstalle库生成的exe文件中')
print('上面将图片转为字符串----下面再将此字符串转为图片')
######################################################################
print('str类型')
print(base64_data_str)
print('str类型--转--bytes类型')
base64_data_bytes = base64_data_str.encode('utf-8')
print(base64_data_bytes)
print('bytes类型--转--二进制类型')
image_data = base64.b64decode(base64_data_bytes)
print(image_data)
print('二进制类型--转--数组')
# 使用 matplotlib,io 库将二进制类型转为数组
img_data = plt.imread(BytesIO(image_data),"JPG")
#第一个参数目前还不清楚
# 第二个参数可以为 PNG、JPG
print(type(img_data))
print(img_data.shape)
# 使用cv2库显示图片
img_cv2 = cv2.cvtColor(img_data,cv2.COLOR_RGB2BGR)
cv2.imshow('a',img_cv2)
cv2.waitKey(0)
cv2.destroyAllWindows()
python用base64库进行图片与字符串的转换
最新推荐文章于 2022-04-17 08:15:27 发布