python對圖片進行base64編碼,互相轉換


全程使用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM