【发布时间】:2020-12-08 00:10:13
【问题描述】:
我有一个名为 frameBytes 的 Uint8Array。我已经用这段代码从这个字节数组中创建了 RGBA 值。
for (var i = 0; i < frameBytes.length; i++) {
imgData.data[4 * i] = frameBytes[i];// red
imgData.data[4 * i + 1] = frameBytes[i]; // green
imgData.data[4 * i + 2] = frameBytes[i];// blue
imgData.data[4 * i + 3] = 255; // alpha
}
然后我使用以下代码将这个 GRBA 值显示到画布上。
var ctx = fingerFrame.getContext('2d');
var imgData = ctx.createImageData(fingerFrame.width, fingerFrame.height);
ctx.putImageData(imgData, 0, 0, 0, 0, fingerFrame.width, fingerFrame.height);
在画布之后,我使用以下代码在图像标签中成像:
const img = document.getElementById('i');
img.src = fingerFrame.toDataURL();
但我不想使用画布。我想直接在 Uint8Array 的图像标签中显示图像。我怎样才能做到这一点?任何帮助将不胜感激。
【问题讨论】:
-
你为什么不想使用画布呢?这是最直接的方法。其他方式都涉及您使用能够从您的 RGBA 值编码为图像格式的外部脚本,即它必须完全构建图像文件。
-
你能给我举个例子吗?
-
“那个”是什么?构建自己的 PNG 编码器?哼,不。 Specs for png are here、pako.js 可能也会帮助你,但我能为你做的就是这些了。如果你的意思是用画布做的例子,那么jsfiddle.net/9ggpqzL0
-
我知道这是一篇旧帖子,但对任何人都可能有所帮助:看看这个很好的utility。这是一个可以复制的简单代码块。你可以这样使用它:
var base64image = "data:image/png;base64,"+ bytesToBase64(data)确保 mimetypeimage/png是正确的(你必须弄清楚)。
标签: javascript image canvas base64