在图像上使用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数组,就像图像一样?
答案 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)