代码之家  ›  专栏  ›  技术社区  ›  BuschnicK

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

  •  0
  • BuschnicK  · 技术社区  · 16 年前

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

    2 回复  |  直到 16 年前
        1
  •  2
  •   Theo.T    16 年前

    我不认为有直接的bitmapdata方法可以这样合并Alpha chanel。如果你不需要使用RGB模式,我想使用RGB模式可能会有帮助。

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

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

        2
  •  0
  •   George Profenza    16 年前

    LIGHTEN 混合模式。

    Foundation ActionScript 3.0 Image Effects :

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

    source zip .

    把提奥的建议用于

    • 锁()
    • 解锁()

    使用位图数据或使用PixelBender提高速度。显然根据 Adobe ,超过90%的Flash Player用户已经使用版本10。