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

时间:2018-04-09 14:18:37

标签: 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_test_image)
test_image_1D = np.frombuffer(decoded)

然而,与具有维度test_image_1D的原始图像相比,10x10x3只是一维的。是否可以在不知道缓冲区大小的情况下恢复orignal数组,就像图像一样?

1 个答案:

答案 0 :(得分:3)

假设您的数据始终是图像,则需要使用库从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)