Python 恢复表示base64编码后的图像的numpy数组

Python 恢复表示base64编码后的图像的numpy数组,python,arrays,numpy,base64,Python,Arrays,Numpy,Base64,在图像上使用base64编码可以将图像完全恢复到其原始形状及其所有尺寸(2D、RGB),而无需直接知道分辨率-它们存储在base64信息中 但是,当我有一个表示如下图像的numpy数组时: test_image = np.random.rand(10,10,3) 然后将其放入base64中,使用: b64_test_image = base64.b64encode(test_image) 我可以通过以下方式返回阵列的内容: decoded = base64.b64decode(b64_tes

在图像上使用base64编码可以将图像完全恢复到其原始形状及其所有尺寸(2D、RGB),而无需直接知道分辨率-它们存储在base64信息中

但是,当我有一个表示如下图像的numpy数组时:

test_image = np.random.rand(10,10,3)
然后将其放入base64中,使用:

b64_test_image = base64.b64encode(test_image)
我可以通过以下方式返回阵列的内容:

decoded = base64.b64decode(b64_test_image)
test_image_1D = np.frombuffer(decoded)

然而,
test\u image\u 1D
与原始图像相比仅为一维,原始图像的尺寸为
10x10x3
。是否可以在不知道缓冲区大小的情况下恢复原始数组,就像图像一样?

假设数据始终是图像,则需要使用库从base64编码字符串中获取图像。例如,使用OpenCV:

retval, buffer = cv2.imencode('.jpg', test_image)
jpg_as_text = base64.b64encode(buffer)
nparr = np.fromstring(base64.b64decode(jpg_as_text), np.uint8)
img2 = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

LookupError:“base64”不是文本编码;使用codecks.decode()处理任意编解码器,来自第一行代码。如果将其替换为base64.b64encode(b64_test_image)-img将被清空,并编辑答案,现在它应该可以工作了。Python 3.6对我来说确实如此经过30个小时的尝试,我找到了你的答案。。。。非常感谢。