1

我有一个从 webgl 程序传递的像素数据数组。然后我处理像素数据以进行绿色筛选并将结果输出到 2d 画布中。考虑到我是 Canvas 2d 的新手,我的问题是,如何正确地将图像数据传递到画布。

var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
document.body.appendChild(canvas);
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

var SetCanvas = function(data){
    var id = ctx.createImageData(window.innerWidth, window.innerHeight);
    id.data = data;
    ctx.putImageData(data, 0, 0);
};
4

1 回答 1

0

dataImageData 对象的属性不能这样设置。

您需要将此 Uint8ClampedArray 的每个值设置为传入的值data

如果data是一个 ArrayLike 对象并且持有 Uint8Clamped 值,那么你可以使用set()TypedArrays 的方法。

var SetCanvas = function(data){
  var id = ctx.createImageData(window.innerWidth, window.innerHeight);
  id.data.set( data );
  ctx.putImageData(id, 0, 0);
};

但当然,这假设data拥有正确的数据(即每个像素 4 个 rgba Uint8 值,并且长度为innerWidth x innerHeight x 4)。

另外,您输入的是输入data而不是 ImageData id

于 2019-03-27T23:51:32.247 回答