Flash:通过max(通道)组合两个BitmapData对象

时间:2010-02-02 09:34:52

标签: flash actionscript-3 alpha bitmapdata blit

我有两个带alpha通道的BitmapData对象。我想通过对每个通道使用max(channel_image_one,channel_image_two)将它们组合成一个,包括alpha。有没有简单的方法来实现这个结果?

2 个答案:

答案 0 :(得分:2)

我认为没有直接的bitmapdata方法来合并Alpha chanel。 RGB可以在draw()应用混合模式的帮助下完成,但是如果你需要一个严格的每个chanel最大值,我认为它不会起作用。)

此外,您可以通过PixelBender创建着色器来执行此任务。它是进行这种操作的完美工具。

性能较慢但设置较快,如果您不习惯PB,您可以使用BitmapData.getPixel32()/ setPixel32()逐个迭代/比较/写入像素。 如果您这样做,请考虑使用BitmapData.lock()/ unlock()来提高性能。

答案 1 :(得分:0)

如果你想要max(image_one,image_two)应该等同于LIGHTEN混合模式。

以下是Foundation ActionScript 3.0 Image Effects的摘要:

public function lighten(topPixel:uint, bottomPixel:uint):uint{
   return Math.max(topPixel,bottomPixel);
}

您可以从source zip的第2章文件夹中获取所需的文件。

使用Theo的建议

  • 锁()
  • for loops
  • 解锁()

获取BitmapData的速度或使用PixelBender。显然根据Adobe,超过90%的Flash Player用户已经使用了版本10.