错误#2077:无法使用指定的输入参数执行此过滤操作

时间:2013-10-30 23:03:11

标签: actionscript-3 flash bitmapdata

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

我收到此错误消息,尝试通过BitmapFilter

DropShadowFilter(特别是内部BitmapData)应用于.applyFilter

我之前从未见过这条消息,谷歌搜索没有立即回答这个问题,我看到有人对为什么它应用于JPEG而不是PNG图像感到困惑。所以希望这个问题可以帮助别人。我将在下面提供我的简单解决方案。

1 个答案:

答案 0 :(得分:0)

阅读BitmapData.applyFilter documentation,问题显而易见。我尝试将DropShadowFilter应用于没有透明度的BitmapData(也就是说,没有alpha通道,每个像素只有24位。)文档说明哪些过滤器需要透明度(为方便起见,这里复制):

每种类型的过滤器都有一定的要求,如下:

  • BlurFilter - 此过滤器可以使用不透明或透明的源和目标图像。如果图像的格式不匹配,则在过滤期间生成的源图像副本将与目标图像的格式匹配。

  • BevelFilter,DropShadowFilter,GlowFilter,ChromeFilter - 这些过滤器的目标图片必须是透明图片。调用DropShadowFilter或GlowFilter会创建一个包含投影或发光的Alpha通道数据的图像。它不会在目标图像上创建投影。如果您将任何这些过滤器与不透明的目标图像一起使用,则会抛出异常。

  • 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位白色),则会得到一个空白图像,因为alpha值(最高8位)为0。