閃光:max(channel) を介して 2 つの BitmapData オブジェクトを結合する
-
24-09-2019 - |
質問
アルファ チャネルを持つ 2 つの BitmapData オブジェクトがあります。アルファを含む各チャンネルに対して max(channel_image_one, channel_image_two) を使用して、それらを 1 つに結合したいと思います。この結果を達成する簡単な方法はありますか?
解決
私は道というアルファシャネルをマージするのBitmapData方法はまっすぐ進むないと思います。 )RGBは多分引き分け()ブレンドモードを適用するの助けを借りて行うことができますが、私はあなたがシャネルにつき厳格最大を必要とする場合、それがうまくいくとは思わない。
また、あなたは PixelBender にこのタスクを実行するためのシェーダ感謝を作成することができます。これは、操作の種類に最適なツールです。
遅いパフォーマンスでなく、より速く、セットアップにあなたのPBに使用されていない場合は、単に反復/ピクセルBitmapData.getPixel32と一つ一つを書く/比較することができ()/ setPixel32()。 あなたはそのために行く場合は、ブーストパフォーマンスにBitmapData.lock()/アンロック()を使用して考えます。
他のヒント
max(image_one,image_two) が必要な場合は、 明るくする ブレンドモード。
ここからの抜粋です Foundation ActionScript 3.0 の画像効果 :
public function lighten(topPixel:uint, bottomPixel:uint):uint{
return Math.max(topPixel,bottomPixel);
}
必要なファイルは、第 2 章のフォルダーからファイルとして入手できます。 ソースzip.
テオのアドバイスを活用して、
- ロック()
- for ループ
- ロック解除()
BitmapData を使用して速度を上げるか、PixelBender を使用してください。どうやらそれによると アドビ, Flash Player ユーザーの 90% 以上がすでにバージョン 10 を使用しています。