canvas中插入透明图片,getImageData()生成img时,透明如何转换为白色背景的方式。

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("tulip");
ctx.drawImage(img,0,0,w,h);
this.cvsContext=cxt;
toWhite(w,h)

通过 getImageData() 复制画布上指定矩形的像素数据,然后通过 putImageData() 将图像数据放回画布:

  _toWhite (w,h) {
    var imageData = this.cvsContext.getImageData(0, 0, w, h)
    for (var i = 0; i < imageData.data.length; i += 4) {
      // 当该像素是透明的,则设置成白色
      if (imageData.data[i + 3] === 0) {
        imageData.data[i] = 255
        imageData.data[i + 1] = 255
        imageData.data[i + 2] = 255
        imageData.data[i + 3] = 255
      }
    }
    this.cvsContext.putImageData(imageData, 0, 0)
  }