I basically need to do this but in Python instead of Javascript. I receive a base64 encoded string from a socketio connection, convert it to uint8 and work on it, then need to convert it to base64 string so I can send it back.
So, up to this point I've got this (I'm getting the data
dictionary from the socketio server):
import pickle
import base64
from io import BytesIO
from PIL import Image
base64_image_string = data["image"]
image = Image.open(BytesIO(base64.b64decode(base64_image_string)))
img = np.array(image)
How do I reverse this process to get from img
back to base64_image_string
?
UPDATE:
I have solved this in the following manner (continuing from the code snippet above):
pil_img = Image.fromarray(img)
buff = BytesIO()
pil_img.save(buff, format="JPEG")
new_image_string = base64.b64encode(buff.getvalue()).decode("utf-8")
Somewhat confusingly, new_image_string
is not identical to base64_image_string
but the image rendered from new_image_string
looks the same so I'm satisfied!