fswebcam:通过Node.js获取dataURI
我有一个在Raspberry Pi上运行的fswebcam。 使用命令行,这可以节省JPG图像。
我现在想要在Node.js应用程序中接收这些图像,并通过dataURI将它们发送到浏览器中使用。
在Node.js上,我这样做:
var exec = require('child_process').exec; exec("fswebcam -d /dev/video0 -r 160x120 --no-banner --save '-'", function(err, stdout, stderr) { var imageBase64 = new Buffer(stdout).toString('base64');
然后我发送imageBase64
到浏览器。
在浏览器中,将收到的数据设置为数据URI失败:
image.src = "data:image/jpg;base64," + imageBase64;
使用由fswebcam创build的存储JPG创build的数据URI(通过在线生成器)执行上述操作可以正常工作。
关于格式和编码我在这里没有看到什么?
Content-Type应该是image/jpeg
而不是image/jpg
。
此外, new Buffer(stdout)
是多余的,因为stdout
已经是一个缓冲区,所以你可以做stdout.toString('base64')
。
最后,如果数据本身不好,你可以用这个网页仔细检查你的base64编码输出,或者写stdout
到磁盘,并使用file
命令来保证它完好无损。