PutImageData 给出黑屏
PutImageData gives black screen
我有一个从 webgl 程序传递过来的像素数据数组。然后我处理绿色筛选的像素数据并将结果输出到 2d canvas。考虑到我是 Canvas 2d 的新手,我的问题是,如何将图像数据正确传递给 canvas.
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);
};
ImageData 对象的 data
属性 不能这样设置。
您需要将此 Uint8ClampedArray 的每个值设置为您传入的值 data
。
如果 data
是一个 ArrayLike 对象并包含 Uint8Clamped 值,那么您可以使用 TypedArrays 的 set()
方法。
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
。
我有一个从 webgl 程序传递过来的像素数据数组。然后我处理绿色筛选的像素数据并将结果输出到 2d canvas。考虑到我是 Canvas 2d 的新手,我的问题是,如何将图像数据正确传递给 canvas.
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);
};
data
属性 不能这样设置。
您需要将此 Uint8ClampedArray 的每个值设置为您传入的值 data
。
如果 data
是一个 ArrayLike 对象并包含 Uint8Clamped 值,那么您可以使用 TypedArrays 的 set()
方法。
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
。