Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Restoring a numpy array representing an image after base64 encoding

Using base64 encoding on images gives the opportunity to fully restore the image to its original shape, with all its dimension (2D, RGB) without knowing the resolutions directly - they are stored inside the base64 information

However, when I have a numpy array representing an image like:

test_image = np.random.rand(10,10,3)

and then put it into base64 with:

b64_test_image = base64.b64encode(test_image)

I am able to get back to the content of the array with:

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

However, test_image_1D is only one-dimensional in comparison to the orignal image which had the dimension 10x10x3. Is it possible to restore the orignal array without knowing the buffer size, like it is the case with images?

like image 609
Kev1n91 Avatar asked Oct 27 '25 19:10

Kev1n91


1 Answers

Assuming your data is always an image, you need to use a library to get the image back from the base64 encoded string. For example with 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)
like image 103
marco romelli Avatar answered Oct 30 '25 08:10

marco romelli



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!