2

実際に機能するビットマップの色置換の実装の例はありますか?

私は次のことを達成しようとしています:

前:

後:

注:ここでは、カラーマトリックス変換を使用しようとはしていません。1つの色を選択し、次にしきい値を選択してから、しきい値内のすべての色を効果的にシフトする新しい色を選択する機能が必要です。

このアイデアを非常に正確に実行することは可能ですか?もしそうなら、概念実証を教えてもらえますか?

4

1 に答える 1

1

これにボールを転がすためだけに...これがあなたにとって正しい解決策になるかどうかはわかりませんが、それは始まりです.

この回答は、 BitmapData.threshold メソッドを使用して色を置き換える方法を示しています。色を透明なピクセルに置き換えてから、ムービークリップの背後に背景を置き、色間でアニメーション化することができます。

var inputBitmapData:BitmapData = new BitmapData(200, 200, true, 0xFF0000FF);
inputBitmapData.fillRect(new Rectangle(10, 10, 180, 180), 0xFFFF0000);

var outputBitmapData:BitmapData = new BitmapData(200, 200, true); 
var destPoint:Point = new Point(0, 0); var sourceRect:Rectangle = new Rectangle(0, 0, outputBitmapData.width, outputBitmapData.height); 
var threshold:uint =  0xFFFF0000;  
var color:uint = 0x00000000;     
outputBitmapData.threshold(inputBitmapData, sourceRect, destPoint, "==", threshold, color, 0xFFFFFFFF, true);

var input:Bitmap = new Bitmap(inputBitmapData); addChild(input);
var output:Bitmap = new Bitmap(outputBitmapData); output.x = input.x + input.width + 10; 

addChild(output);

bitmapdata をピクセルごとにループして、ある色を別の色に置き換えることもできます。

for (var j = 0; j < bitmap.height; j++) {
    for (var i = 0; i < bitmap.width; i++) {
        if(bitmapData.getPixel(i,j)==0xFFFF00)  {
            bitmapData.setPixel(i,j, 0xFF0000);
        }
    }
}
于 2012-06-21T21:00:32.880 に答える