base64轉換過程
這幾天寫web,需要将使用者上傳的圖檔,實時顯示到前端頁面,然後通過Jcrop裁剪,并将裁剪後的圖檔通過canvas實時顯示到前端,最後将canvas顯示的圖檔裝換為base64格式,傳到後端django,但pillow是無法直接讀取base64格式的圖檔的,是以特地查閱了一些資料,發現python3内置了base64轉換函數,這裡分享一下使用方法...
import os, base64
# 圖檔裝換
with open("./robot.png", "rb") as f:
# 将讀取的二進制檔案轉換為base64字元串
bs64_str = base64.b64encode(f.read())
# 列印圖像轉換base64格式的字元串,type結果為<class 'bytes'>
print(bs64_str, type(bs64_str))
# 将base64格式的資料裝換為二進制資料
imgdata = base64.b64decode(bs64_str)
# 将二進制資料裝換為圖檔
with open("./robot2.png", "wb") as f2:
f2.write(imgdata)
base64使用場景
對某些無關緊要的資訊進行表面加密,也就是說不行讓别人看到你明文傳資料,但别人看到也是無所謂的(浏覽器可以直接解析base64格式的圖檔檔案)
base64加密文本
import os, base64
# 文本簡單加密
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圖檔在網頁上的表現形式
<html><body><img src="data:image/jpeg;base64,這裡放的是base64編碼" /></body></html>
# 使用正則從上面src中抽取base64格式的圖檔資訊
file = re.match(r"data:image/jpeg;base64,(.*)", file).group(1)