2.9.2 获取图片像素数据

代码清单2-61展示了获取图片像素数据的方法。首先创建一个Image对象,把背景图片作为Image对象的源,然后在Image对象的onload事件句柄中创建canvas,并将Image对象绘制在canvas上,最后使用canvas方法getImageData()获取图片RGBA像素数据。

代码清单2-61 获取图片像素数据

getImageFrame() {
  const backgroundImg = new Image();
  backgroundImg.src = 'media/beach.jpg';
  backgroundImg.onload = () => {
    const imageCanvas = document.createElement('canvas');
    imageCanvas.width = this.width;
    imageCanvas.height = this.height;
    const ctx = imageCanvas.getContext('2d');
    ctx.drawImage(backgroundImg,0,0,this.width,this.height);
    this.imageFrame = ctx.getImageData(0, 0, this.width, this.height);
    this.timerCallback();
  }
}

getImageData()方法获取的像素数据会保存在this.imageFrame.data中,类型为Uint8ClampedArray,每个像素由4个Uint8整数组成,分别表示R(红)、G(绿)、B(蓝)、A(透明度)数据,整数取值范围为0~255。