Flask-SocketIO 发送图片

Flask-SocketIO send images

我目前正在从事一个使用 Flask-SocketIO 通过互联网发送内容的项目,但我遇到了这个问题。

问题:

有什么方法可以在Flask-SocketIO中发送图像吗?我用谷歌搜索了一下,但运气不好。

Socket.IO 是一种与数据无关的协议,因此您可以发送任何类型的信息。支持文本和二进制负载。

如果你想从服务器发送图片,你可以这样做:

with open('my_image_file.jpg', 'rb') as f:
    image_data = f.read()
emit('my-image-event', {'image_data': image_data})

客户端必须知道您正在发送 jpeg 数据,Socket.IO 协议中没有任何内容使发送图像与发送文本或其他数据格式不同。

如果您使用的是 JavaScript 客户端,您将获得字节数组形式的数据。其他客户端可能会为此数据选择最合适的二进制表示形式。

除了已接受的答案之外,我在将 JavaScript 中的 ArrayBuffer 转换为 jpeg 图像时遇到了问题。我使用的代码灵感来自 [https://gist.github.com/candycode/f18ae1767b2b0aba568e][1]:

function receive_data(data) {
            

            var arrayBufferView = new Uint8Array(data['image']);
            var blob = new Blob( [ arrayBufferView ], { type: "image/jpeg" } );

            var img_url = URL.createObjectURL(blob);
            document.getElementById("fig_image").src = img_url;

        }