我基本上需 要这样做, 但使用 Python 而不是 Javascript。我从 socketio 连接接收到一个 base64 编码的字符串,将其转换为 uint8 并对其进行处理,然后需要将其转换为 base64 字符串以便我可以将其发回。
所以,到目前为止,我已经得到了这个(我正在从 socketio 服务器获取 data
字典):
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)
如何反转此过程以从 img
返回 base64_image_string
?
更新:
我已经通过以下方式解决了这个问题(从上面的代码片段继续):
pil_img = Image.fromarray(img)
buff = BytesIO()
pil_img.save(buff, format="JPEG")
new_image_string = base64.b64encode(buff.getvalue()).decode("utf-8")
有点令人困惑, new_image_string
与 base64_image_string
不同,但从--- new_image_string
—渲染的图像看起来一样,所以我很满意!
原文由 Ryan Keenan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我相信因为
numpy.array
支持缓冲协议,你只需要以下内容:所以,例如: