base64轉(zhuǎn)換過(guò)程
這幾天寫web,需要將用戶上傳的圖片,實(shí)時(shí)顯示到前端頁(yè)面,然后通過(guò)Jcrop裁剪,并將裁剪后的圖片通過(guò)canvas實(shí)時(shí)顯示到前端,最后將canvas顯示的圖片裝換為base64格式,傳到后端django,但pillow是無(wú)法直接讀取base64格式的圖片的,所以特地查閱了一些資料,發(fā)現(xiàn)python3內(nèi)置了base64轉(zhuǎn)換函數(shù),這里分享一下使用方法...
import os, base64
# 圖片裝換
with open("./robot.png", "rb") as f:
# 將讀取的二進(jìn)制文件轉(zhuǎn)換為base64字符串
bs64_str = base64.b64encode(f.read())
# 打印圖像轉(zhuǎn)換base64格式的字符串,type結(jié)果為<class 'bytes'>
print(bs64_str, type(bs64_str))
# 將base64格式的數(shù)據(jù)裝換為二進(jìn)制數(shù)據(jù)
imgdata = base64.b64decode(bs64_str)
# 將二進(jìn)制數(shù)據(jù)裝換為圖片
with open("./robot2.png", "wb") as f2:
f2.write(imgdata)
base64使用場(chǎng)景
對(duì)某些無(wú)關(guān)緊要的信息進(jìn)行表面加密,也就是說(shuō)不行讓別人看到你明文傳數(shù)據(jù),但別人看到也是無(wú)所謂的(瀏覽器可以直接解析base64格式的圖片文件)
base64加密文本
import os, base64
# 文本簡(jiǎn)單加密
bs64_my_time = base64.b64encode("真的羨慕你們這種18歲的,我還差15年呢!".encode("utf-8"))
print("bs64格式的文本(偽加密)",bs64_my_time)
my_time = base64.b64decode(bs64_my_time).decode("utf-8")
print("原文本:",my_time)
偽加密
base64圖片在網(wǎng)頁(yè)上的表現(xiàn)形式
<html><body><img src="data:image/jpeg;base64,這里放的是base64編碼" /></body></html>
# 使用正則從上面src中抽取base64格式的圖片信息
file = re.match(r"data:image/jpeg;base64,(.*)", file).group(1)