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

新手上路,请多包涵

我有一个自定义的 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 上尝试过,并且确实显示了正确的图像。我一定是错过了一些愚蠢的东西。任何帮助都会很棒!

谢谢您的帮助!

原文由 Giallo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 498
1 个回答

那是你要的吗?

 // Buffer for the jpg data
var buf = getImageResult.imagebuffer;
// Create an HTML img tag
var imageElem = document.createElement('img');
// Just use the toString() method from your buffer instance
// to get date as base64 type
imageElem.src = 'data:image/jpeg;base64,' + buf.toString('base64');

原文由 Kiochan 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题