【问题标题】:Send an image via TCP sockets from node.js to Qt client通过 TCP 套接字将图像从 node.js 发送到 Qt 客户端
【发布时间】:2014-12-01 00:31:04
【问题描述】:

我想打开一个图像并将其发送到我的 nodejs 服务器中连接的套接字。 问题是当我尝试通过socket.write(myImage); 发送一些图像时,因为write() 方法无法将其作为图像对象发送。我发现的“解决方案”是从我的图像创建一个缓冲区,复制到另一个缓冲区并将其解析为 base64 编码并使用socket.write(myBase64Img) 发送,在我的 Qt 客户端中接收它并使用 openCV 解码该图像。问题是这非常昂贵。还有另一种方法可以通过 TCP 套接字发送我的图像吗?

PS:图片的网址发不出去,我要发图片。

谢谢!

【问题讨论】:

    标签: node.js sockets image-processing tcp


    【解决方案1】:

    您应该能够将原始图像数据写入套接字而无需对其进行 base64 编码,只需将包含该二进制数据的缓冲区传递给write()。如果您还没有将图像完全保存在内存中,您也可以流式传输数据,因为这将有助于节省内存使用量。

    【讨论】:

    • 你有什么例子吗?
    • @Tomirammstein 这取决于您的图像数据的存储位置。缓冲区中有二进制图像数据吗?你有它在磁盘上而不是在内存中吗?还是别的什么?
    【解决方案2】:

    假设您正在处理已在磁盘上的图像,正确的做法是将图像直接从磁盘流式传输到套接字。

    var stream = fs.createReadStream(filePath);
    stream.pipe(socket);
    

    查看文档了解详情:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-12
      • 2020-01-22
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多