1

ActionScript 3ですべての濃い灰色と黒のピクセルを白に置き換えるために画像(具体的にはビットマップ)を変更できるようにしたいのですが、画像内の他のすべての色を維持します。ColorMatrixFilterとbitmapdata.thresholdについてはよく知っていますが、削除する色をターゲットにする方法や、特定の色の範囲内で確認する方法がわかりません。これを行うための(効率的な)方法はありますか?

あなたが提供できるどんな助けにも感謝します。

4

1 に答える 1

0

AS3 API は、しきい値の使用方法に関する非常に優れたドキュメントを提供します。ここで見つけることができます。彼らの例は、実際に特定の範囲の色をチェックします。あなたの問題に対応するように例を修正しました。私はそれをテストしていないので、微調整が必​​要かもしれません。

var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);
var pt:Point = new Point(0, 0);
var rect:Rectangle = new Rectangle(0, 0, 200, 200);
var threshold:uint =  0x00A9A9A9; //Dark Grey
var color:uint = 0x00000000; //Replacement color (white)
var maskColor:uint = 0xFFFFFFFF; //What channels to affect (this is the default).
bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);

もう 1 つのオプションは、すべてのピクセルを反復処理し、ピクセルの値に基づいて特定のアクションを実行する double for ループを使用することです。

for(var y:int = 0; y < height; y++){
  for(var x:int = 0; x < width; x++){
    var currentPixel:uint = image.getPixel( x, y );
    if(currentPixel != color){
      image.setPixel( destPoint.x + j, destPoint.y + i, currentPixel );
    }          
  }
}
于 2012-12-15T22:20:25.330 に答える