我有一个自定义的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上尝试了,并且显示正确的图像。我一定是想念一些愚蠢的事。任何帮助都会很棒!
感谢您的帮助!
答案 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;
完美无缺。