アルファ チャネルを持つ BitmapData オブジェクトがあります。ActionScript3 (FlashPlayer10) でそのアルファ チャネルをオフセットする最速の方法を知りたいです。オフセットとは、カラー チャネルをそのままにして、そのチャネルのすべてのピクセルを一方向にシフトする (画像の境界線を囲む) ことを意味します。
このような変換を 1 つのチャネルのみに適用する良い方法はありますか?
アルファ チャネルを持つ BitmapData オブジェクトがあります。ActionScript3 (FlashPlayer10) でそのアルファ チャネルをオフセットする最速の方法を知りたいです。オフセットとは、カラー チャネルをそのままにして、そのチャネルのすべてのピクセルを一方向にシフトする (画像の境界線を囲む) ことを意味します。
このような変換を 1 つのチャネルのみに適用する良い方法はありますか?
これに取り組む方法は、元のbitmapDataオブジェクトのclone()を作成することだと思います。オリジナルはそのままにしておきます。クローンを使用して、すべてのピクセルを希望どおりにシフトします。「キャリー付きスクロール」は内蔵されていませんが、それほど難しくはありません。1つのコードを次に示しますが、一方向のみを実行する場合は、コードを大幅に簡略化できます。
http://www.actionscript.org/forums/showthread.php3?p=767722
スクロールした後、copyChannel()を使用して、スクロールしたクローンから元のクローンにアルファチャネルをコピーします。
この種の操作には Adobe PixelBender を使用するか、ActionScript で手動で (getVector/setVector を使用して) 記述します。ただし、すべての色は事前に乗算されたアルファで保存されるため、アルファ チャネルをシフトすることは悪い考えのように思えます。
これは、精度が継続的に低下することを意味します。