0
Error #2077: This filter operation cannot be performed with the specified input parameters.
  at flash.display::BitmapData/applyFilter()

ビアにBitmapFilter(具体的にはインナーDropShadowFilter)を適用しようとすると、このエラーメッセージが表示されましたBitmapData.applyFilter

私はこれまでこのメッセージを見たことがなく、グーグルはすぐに質問に答えませんでした。なぜそれが PNG 画像ではなく JPEG に適用されるのかについて混乱している人を見ました. うまくいけば、この質問は他の誰かを助けるでしょう. 以下に私の簡単な解決策を含めます。

4

1 に答える 1

0

BitmapData.applyFilter のドキュメントを読むと、問題が何であるかは明らかです。透過性なしで BitmapData に DropShadowFilter を適用しようとしました (別名、アルファ チャネルなし、ピクセルあたり 24 ビットのみ)。フィルターが透過性を必要とするドキュメントの状態 (便宜上、ここに複製):

フィルターの種類ごとに、次のような特定の要件があります。

  • BlurFilter — このフィルターは、不透明または透明のソース イメージと宛先イメージを使用できます。イメージの形式が一致しない場合、フィルタリング中に作成されるソース イメージのコピーは、宛先イメージの形式と一致します。

  • BevelFilter、DropShadowFilter、GlowFilter、ChromeFilter — これらのフィルターの宛先画像は透明な画像でなければなりません。DropShadowFilter または GlowFilter を呼び出すと、ドロップ シャドウまたはグローのアルファ チャネル データを含むイメージが作成されます。宛先イメージにドロップ シャドウは作成されません。これらのフィルターのいずれかを不透明な宛先イメージで使用すると、例外がスローされます。

  • ConvolutionFilter — このフィルターは、不透明または透明のソース イメージと宛先イメージを使用できます。

  • ColorMatrixFilter — このフィルターは、不透明または透明のソース イメージと宛先イメージを使用できます。

  • DisplacementMapFilter — このフィルターは、不透明または透明のソース イメージと宛先イメージを使用できますが、ソース イメージと宛先イメージの形式は同じである必要があります。

透明度のある を作成するのBitmapDataは簡単です。これはコンストラクターの 3 番目のパラメーターです。

// args are: width, height, is_transparent, default_color
var bd:BitmapData = new BitmapData(1024, 768, true, 0xff000000);

透明な BitmapData を作成するときは、デフォルトの色 (4 番目のパラメーター) に 32 ビット整数を指定する必要があることに注意してください。単に 0xffffff (24 ビットの白) を指定すると、アルファ値 (上位 8 ビット) が 0 になるため、空白の画像が得られます。

于 2013-10-30T23:03:11.120 に答える