1

アルファチャンネルを使用せずに透明性を維持できるかどうかを知りたいです。私が必要とするのは、アルファ値に応じて(私のpngファイルの)ピクセルを描画するか描画しないかです

アルファ チャネル > 128 の場合はピクセルを描画し、それ以外の場合はピクセルを描画しません。

ありがとう

4

1 に答える 1

2

それについては、おそらくいくつかの方法があります。

1つの方法は、画像を描画してから呼び出すことですgetImageData

画像データのすべてのピクセルを調べ、アルファ コンポーネントが 128 以下の場合、そのピクセルを完全に透明にします。

次に、変更されたimageDataを元に戻しますputImageData

これは記憶によるものなので、何かを見逃している可能性があります。

var imageData = ctx.getImageData(0,0,picwidth, picheight);
var pixels = imageData.data;
var numPixels = pixels.length;

ctx.clearRect(0, 0, can.width, can.height);

for (var i = 0; i < numPixels; i++) {
    if (pixels[i*4+3] <= 128) pixels[i*4+3] = 0;
}
ctx.putImageData(imageData, 0, 0);
于 2011-08-16T12:59:16.440 に答える