我想打开一个图像并发送它并发送到我的nodejs服务器中连接的套接字。
问题是当我尝试通过socket.write(myImage);
发送一些图像时,因为方法write()
无法将其作为图像对象发送。我找到的“解决方案”是从我的图像创建一个缓冲区,复制到另一个缓冲区并将其解析为base64编码并使用socket.write(myBase64Img)
发送,在我的Qt客户端接收它并解码该图像OpenCV的。问题是这非常昂贵。还有另一种通过TCP套接字发送图像的方法吗?
PS:我无法发送图片的网址,我想发送图片。
谢谢!
答案 0 :(得分:0)
您应该能够将原始图像数据写入套接字而无需对其进行base64编码,只需将包含该二进制数据的缓冲区传递给write()
即可。如果您没有完全在内存中的图像,您也可以流式传输数据,因为这有助于节省内存使用。
答案 1 :(得分:0)
假设您正在处理已在磁盘上的映像,正确的方法是将映像直接从磁盘流式传输到套接字。
var stream = fs.createReadStream(filePath);
stream.pipe(socket);
有关详细信息,请参阅文档: