全程使用openCV,沒有PIL
代碼:
1 import base64 2 import cv2 3 import sys 4 import numpy as np 5 6 path = sys.argv[1] 7 8 with open(path, "rb") as image_file: 9 encodedImage = base64.b64encode(image_file.read()) 10 imgBase64 = "data:image/jpeg;base64," + encodedImage 11 file = open('imgBase64.txt', 'wb') 12 file.write(imgBase64) 13 file.close() 14 15 npArray = np.fromstring(encodedImage.decode('base64'), np.uint8) 16 image = cv2.imdecode(npArray, cv2.IMREAD_COLOR) 17 cv2.imwrite('img.jpeg',image)
該腳本讀取一個圖片文件,轉換為base64編碼后,添加前綴,並保存到txt中。同時解析base64編碼,將轉換出來的圖片保存到當前目錄。
讀取圖片轉成base64字符串:
要注意用讀文件的方式讀取圖片,不能用 cv2.imread()。我讀取的是 jpeg圖片,在網絡傳輸時需要加上前綴 "data:image/jpeg;base64," 。
從base64字符串轉為圖片:
注意要先去掉前綴 "data:image/jpeg;base64," , 然后再扔到decode函數中。以上是用openCV保存圖片,也可以直接用保存文件的方式:
imgData = base64.b64decode(imgString.strip().replace("data:image/jpeg;base64,",'')) file = open('img.jpeg', 'wb') file.write(imgData) file.close()
參考: https://stackoverflow.com/questions/33754935/read-a-base-64-encoded-image-from-memory-using-opencv-python-library/54205640