我有两个带alpha通道的BitmapData对象。我想通过对每个通道使用max(channel_image_one,channel_image_two)将它们组合成一个,包括alpha。有没有简单的方法来实现这个结果?
答案 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的建议
获取BitmapData的速度或使用PixelBender。显然根据Adobe,超过90%的Flash Player用户已经使用了版本10.