我在创建ImageData时遇到问题。我收到以下错误消息:
这是我正在运行的方法:
public setPixelData(data: Buffer, width: number, height: number) {
var imageData = new ImageData(new Uint8ClampedArray(data), width, height);
this.canvas.getContext('2d').putImageData(imageData, 0, 0);
}
我已转储数据,这是显示的内容:
data = Uint8Array[632028]
width = 720
height = 720
那么,此错误的原因是什么,如何解决?
最佳答案
我遇到了同样的问题,显然数组大小需要是宽度,高度和4 的倍数。
正如Daniel正确指出的那样,与4的乘法归因于RGBA颜色空间,该颜色空间由红色,绿色,蓝色和alpha四个 channel 组成。
因此对于您的情况:720 * 720 * 4等于2073600
var width = 720, height = 720;
var data = new ImageData(
new Uint8ClampedArray(4 * width * height),
720,
720
);
console.log(data);