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命令来保证它完好无损。