如何从Node.js缓冲区显示JPG图像(UInt8Array)

时间:2016-07-21 11:34:22

标签: javascript node.js html5 electron

我有一个自定义的Node.JS插件,它将jpg捕获转移到我的应用程序,这是很好的工作 - 如果我将缓冲区内容写入磁盘,它是一个正确的jpg图像,如预期的那样。

var wstream = fs.createWriteStream(filename);
wstream.write(getImageResult.imagebuffer);
wstream.end();

我很难将该图像显示为img.src,而不是将其保存到磁盘,例如

var image = document.createElement('img');
var b64encoded = btoa(String.fromCharCode.apply(null, getImageResult.imagebuffer));
image.src = 'data:image/jpeg;base64,' + b64encoded;

转换后b64encoded中的数据是正确的,因为我在http://codebeautify.org/base64-to-image-converter上尝试了,并且显示正确的图像。我一定是想念一些愚蠢的事。任何帮助都会很棒!

感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

这就是你想要的吗?

// buffer for the jpg data
var buf = getImageResult.imagebuffer
// create a element
var el = document.createElemrnt('img')
// just use toString methode from your buffer instance
// to get date as base64 type
image.src = 'data:image/jpeg;base64,' + buf.toString('base64')

答案 1 :(得分:2)

您需要将img添加到DOM。

另外,如果要在主过程中生成缓冲区,则需要在电子渲染过程中传递它。

答案 2 :(得分:2)

facepalm ...文本中有一个额外的领先空间...

 var getImageResult = addon.getlatestimage();
 var b64encoded = btoa(String.fromCharCode.apply(null, getImageResult.imagebuffer));
 var datajpg = "data:image/jpg;base64," + b64encoded;
 document.getElementById("myimage").src = datajpg;

完美无缺。

相关问题