将图片转换成base64再转成utf-8的作用(作为个人笔记保存)
from PIL import Image
from io import BytesIO
import base64
img = Image.open(file_name) # 访问图片路径
img_buffer = BytesIO()
img.save(img_buffer, format=img.format)
byte_data = img_buffer.getvalue()
base64_str = base64.b64encode(byte_data) # bytes
base64_str = base64_str.decode("utf-8") # str
先将图片数据转换成字节串,然后将这个自己串以base64的编码(每3个字节转换成4个字节)形式进行编码,编码后依旧是字节串的形式(一般情况下我们都是对字符串进行字节编码,但是这里是对字节串进行字节编码,要注意区分),再以utf-8的形式进行解码得到字符串。这样我们就成功的将图片二进制数据转换成了字符串了,然后存储下来。这样的文件就可以在大部分协议中进行传输了。
对应的解码成图片数据就应该是
base64_binary = base64_str.encode("utf-8")
image = Image.open(BytesIO(base64.urlsave_b64decode(base64_binary)))