是否可以在没有 canvas 的情况下从 ImageBitMap Web 对象获取像素?
Is it possible to get pixels from ImageBitMap web object without a canvas?
我需要在 js 中管理来自网络摄像头的像素。我需要 Uint8ClampedArray 格式的它们。
到目前为止我做到了
this.imageCapture.grabFrame()
.then(imageBitmap => {
this.context2d.drawImage(imageBitmap, 0, 0,imageBitmap.width, imageBitmap.height);
})
然后我用
得到像素
this.context2d.getImageData(0,0,this._videoCanvas.width,this._videoCanvas.height);
然后我格式化图像数据
我在想是否有办法在不使用 canvas 的情况下从 ImageBitMap 获取数据?但到目前为止找不到任何解决方法。有人对这个愚蠢的问题有聪明的答案吗?
谢谢!
不行,目前没有办法。
我们正在努力在 ImageBitmap 接口上添加一个新的 getImageData()
方法 specs issue 但这仍然需要实现者的兴趣,有人来编写规范,并且可能需要大量讨论,因为其中的所有内容没那么容易。
(ImageBitmaps 可以表示许多不同的来源,这些来源内部存储在不同的地方,并为回读进行了各种权衡)。
所以目前唯一的解决办法确实是通过canvas.
在不久的将来,可能比 ImageBitmap.getImageData
更近,您将能够从 MediaStream 中提取 VideoFrames 并将其直接绘制到 canvas,如 , thus avoiding the ImageBitmap step, or even read the YUV planes of each frame as demonstrated in 所示。
我需要在 js 中管理来自网络摄像头的像素。我需要 Uint8ClampedArray 格式的它们。 到目前为止我做到了
this.imageCapture.grabFrame()
.then(imageBitmap => {
this.context2d.drawImage(imageBitmap, 0, 0,imageBitmap.width, imageBitmap.height);
})
然后我用
得到像素this.context2d.getImageData(0,0,this._videoCanvas.width,this._videoCanvas.height);
然后我格式化图像数据
我在想是否有办法在不使用 canvas 的情况下从 ImageBitMap 获取数据?但到目前为止找不到任何解决方法。有人对这个愚蠢的问题有聪明的答案吗?
谢谢!
不行,目前没有办法。
我们正在努力在 ImageBitmap 接口上添加一个新的 getImageData()
方法 specs issue 但这仍然需要实现者的兴趣,有人来编写规范,并且可能需要大量讨论,因为其中的所有内容没那么容易。
(ImageBitmaps 可以表示许多不同的来源,这些来源内部存储在不同的地方,并为回读进行了各种权衡)。
所以目前唯一的解决办法确实是通过canvas.
在不久的将来,可能比 ImageBitmap.getImageData
更近,您将能够从 MediaStream 中提取 VideoFrames 并将其直接绘制到 canvas,如