通过TCP套接字从node.js发送图像到Qt客户端

时间:2014-10-06 17:24:19

标签: node.js sockets image-processing tcp

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

PS:我无法发送图片的网址,我想发送图片。

谢谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

有关详细信息,请参阅文档: