在處理圖像數據時,有這麼一種需求:圖像通常是一個矩陣數據,需要將矩陣數據通過base64編碼傳輸,傳輸完畢之後解碼還原得到原來的矩陣數據。
import numpy as np
import base64
matrix_data=[[1,2,3,4],[5,6,7,8]]
np_matrix_data = np.asarray(matrix_data)
print "origin matrix:",np_matrix_data
print "origin matrix shape:",np_matrix_data.shape
print "origin matrix data type:",np_matrix_data.dtype
data_type = np_matrix_data.dtype
data_shape = np_matrix_data.shape
print "b64 encode data"
b64_data = base64.urlsafe_b64encode(np_matrix_data.tobytes())
#transfer data
print "transfer data"
print "b64 decode data"
decode_b64_data = base64.urlsafe_b64decode(b64_data)
np_data = np.frombuffer(decode_b64_data, dtype=data_type)
print "data to np:",np_data
np_data = np_data.reshape(data_shape)
print "data reshape:",np_data
注意點:
1 保證數據類型和shape前後一致;
2 tobytes和reshape兩者同時有個默認參數order='C';
參考:
https://codeday.me/bug/20190627/1303298.html