ibeautiful
2021-03-29 17:14:01
我有一個(gè)從webgl程序傳遞來的像素?cái)?shù)據(jù)數(shù)組。然后,我將像素?cái)?shù)據(jù)進(jìn)行綠色篩選,然后將結(jié)果輸出到2d畫布中??紤]到我是Canvas 2d的新手,我的問題是,如何正確地將圖像數(shù)據(jù)傳遞到畫布。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);};
1 回答

HUWWW
TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
data 不能像這樣設(shè)置ImageData對(duì)象的屬性。
您需要將此Uint8ClampedArray的每個(gè)值設(shè)置為傳入的值data。
如果data是ArrayLike對(duì)象并保存Uint8Clamped值,則可以使用set()TypedArrays方法。
var SetCanvas = function(data){
var id = ctx.createImageData(window.innerWidth, window.innerHeight);
id.data.set( data );
ctx.putImageData(id, 0, 0);
};
但是當(dāng)然,這是假定data保存正確的數(shù)據(jù)(即每個(gè)像素4個(gè)rgba Uint8值,并且長度為innerWidth x innerHeight x 4)。
另外,您還放置了輸入data而不是ImageData id。
添加回答
舉報(bào)
0/150
提交
取消