是否有 HTML Canvas 视频上下文缓冲区
Is there an HTML Canvas Video Context Buffer
HTML 音频上下文有一个可自由访问的源缓冲区,可用于直接写入字节数据以供扬声器播放。
https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/createBufferSource
是否有我们可以访问并直接访问 write/copy RGB 数据字节的等效 'image buffer source'?
我试过的:
我最终实现了这个逐像素的使用:
context.fillStyle = "rgb(" + source[pointer].toString() + "," + source[pointer+1].toString() + "," + source[pointer+2].toString() + ")";
然后做一个:
context.fillRect (x, y, 1, 1);
将这个像素逐个像素地绘制到 canvas,虽然我怀疑这不是最有效的方法,但效果很好。
我仍然愿意接受其他建议。
是的,html5 canvas 的 image data 允许您直接编辑每个像素的 rgb 值。
var can = document.getElementById('can');
var ctx = can.getContext('2d');
var imgData = ctx.createImageData(100, 100);
for(var i = 0; i < 100*100*4; i+=4) {
imgData.data[i+0] = 0; // red
imgData.data[i+1] = ((i/4)%100)/100*255; // green
imgData.data[i+2] = Math.floor((i/4)/100)/100*255; // blue
imgData.data[i+3] = 255; // alpha
}
ctx.putImageData(imgData, 0, 0);
<canvas width="100" height="100" id="can"></canvas>
HTML 音频上下文有一个可自由访问的源缓冲区,可用于直接写入字节数据以供扬声器播放。
https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/createBufferSource
是否有我们可以访问并直接访问 write/copy RGB 数据字节的等效 'image buffer source'?
我试过的:
我最终实现了这个逐像素的使用:
context.fillStyle = "rgb(" + source[pointer].toString() + "," + source[pointer+1].toString() + "," + source[pointer+2].toString() + ")";
然后做一个:
context.fillRect (x, y, 1, 1);
将这个像素逐个像素地绘制到 canvas,虽然我怀疑这不是最有效的方法,但效果很好。
我仍然愿意接受其他建议。
是的,html5 canvas 的 image data 允许您直接编辑每个像素的 rgb 值。
var can = document.getElementById('can');
var ctx = can.getContext('2d');
var imgData = ctx.createImageData(100, 100);
for(var i = 0; i < 100*100*4; i+=4) {
imgData.data[i+0] = 0; // red
imgData.data[i+1] = ((i/4)%100)/100*255; // green
imgData.data[i+2] = Math.floor((i/4)/100)/100*255; // blue
imgData.data[i+3] = 255; // alpha
}
ctx.putImageData(imgData, 0, 0);
<canvas width="100" height="100" id="can"></canvas>