我在创建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);

10-08 02:08