2

次のコードを使用して、画像の透明度を変更しています。私がやりたいのは、画像の背景色を変更するだけで、画像全体ではなくアルファチャンネルを 0 に設定することです。

次のコードは、画像全体のアルファ透明度を 0 に設定します。

var ctx = this.data.getContext("2d");
var imgData = ctx.getImageData(0, 0, this.data.width, this.data.height);
ctx.putImageData(this.adjustImage(imgData), 0, 0);

adjustImage: function(iArray) {
    var imageData = iArray.data;
    for (var i = 0; i < imageData.length; i+= 4) {
        imageData[i+3] = 0;
    }

    return iArray;            
}

画像内の1 つの色のみrgb(255,0,255)を透明に変更するための助けが必要です。

4

1 に答える 1

3

これを実際にテストしていませんが、これはうまくいくはずです

var ctx = this.data.getContext("2d");
var imgData = ctx.getImageData(0, 0, this.data.width, this.data.height);
ctx.putImageData(this.adjustImage(imgData), 0, 0);

adjustImage: function(iArray) {
    var imageData = iArray.data;
    for (var i = 0; i < imageData.length; i+= 4) {
        if(imageData[i] === 255 && imageData[i+1] === 0 && imageData[i+2] === 255){
            imageData[i+3] = 0;
        }
    }

    return iArray;            
}
于 2012-07-05T08:53:26.983 に答える