我在某个网址上有一张图片,例如“http://91.123.58.169:322/snapshot.cgi?user=admin&pwd=123456”。这是IP摄像机的当前帧。
我想将此图像下载到node.js服务器,将其转换为二进制文件并通过socket.io发送
解决问题的正确方法是什么?
答案 0 :(得分:0)
好的,我自己编写代码并且有效。 所以,我们有IP摄像机图像帧。 我们通过http-request模块获取它,然后将其保存到文件系统,然后通过socket.io将编码的base64映像发送到客户端
var httpRequest = require('http-request');
socket.on('camera', function(data) {
var options = { url: 'http://192.168.1.178:80/snapshot.cgi?user=admin&pwd=123456' };
httpRequest.get(options, __dirname + '/camera.jpg', function(error, result) {
if (error) {
console.error(error);
} else {
fs.readFile(__dirname + '/camera.jpg', function(err, buf) {
socket.emit('camera', { image: true, buffer: buf.toString('base64') });
});
}
});
});
同时在客户端:
socket.on('camera', function(data) {
var image = new Image();
image.src = 'data:image/jpeg;base64,' + data.buffer;
var img = $("<img />").attr('src', image.src);
$("#cameraDiv").empty();
$("#cameraDiv").append(img);
img.addClass("img-rounded img-responsive");
img.css("width", "400px");
img.css("height", "300px");
img.css("margin-left", "auto");
img.css("margin-right", "auto");
});