我正在尝试使用node.js(0.10.20),libgphoto2(2.5.2。)和gphoto2模块为Raspberry Pi(最新的raspbian)上的节点构建canon eos 7d的web gui。
除了在节点中保存文件外,一切似乎都能正常工作。
即时使用以下代码段:
app.get('/shoot', function(req, res){
camera.takePicture({download:true}, function(er, data){
res.header('Content-Type', 'image/jpeg');
res.send(data);
fs.writeFile("public/images/sampleImg.jpg", data);
});
});
创建的文件不可读/不是有效的jpg图像
使用libgphoto的cli工具创建一个有效的图像:
pi@raspi /srv/node/eos $ gphoto2 --capture-image-and-download
所以我假设错误在用于保存数据的节点代码中的某处
如何将节点中的数据正确保存为.jpg文件?
答案 0 :(得分:0)
我正在做一些非常相似的事情。 我似乎记得需要指定来自摄像头的数据是二进制的,如:
app.get('/shoot', function(req, res){
camera.takePicture({download:true}, function(er, data){
res.header('Content-Type', 'image/jpeg');
res.send(new Buffer(data, 'binary'));
fs.writeFile(
"public/images/sampleImg.jpg",
new Buffer(data, 'binary'),
function (err){}
);
});
});
如果你想合作,请给我发一封电子邮件。
http://tonyspiro.com/uploading-and-resizing-an-image-using-node-js/ http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-May/004270.html