Frage

Ich habe zwei Bitmapdata-Objekte mit Alpha-Kanälen. Ich möchte sie zu einer einzigen kombiniert unter Verwendung max (channel_image_one, channel_image_two) für jeden Kanal, einschließlich der alpha. Gibt es einen einfachen Weg, um dieses Ergebnis zu erreichen?

War es hilfreich?

Lösung

Ich glaube nicht, dass es gerade nach vorne BitmapData- Methode, um die Alpha chanel auf diese Weise zu verschmelzen. RGB könnte vielleicht mit Hilfe von Zieh tun () einen Mischmodus anwenden, aber ich glaube nicht, es würde funktionieren, wenn Sie einen strengen max pro Kanal benötigen).

Außerdem können Sie eine Shader dank erstellen Pixelbender diese Aufgabe auszuführen. Es ist das perfekte Werkzeug für diese Art von Manipulationen.

Langsamer in der Leistung aber schneller einrichten, wenn Ihr nicht zu PB verwendet wird, könnte man nur Iterierte / Vergleichs- / Schreiben Sie die Pixel einzeln mit BitmapData.getPixel32 () / setPixel32 (). Falls Sie für das gehen, denkt über die Verwendung von BitmapData.lock () / unlock (), um Leistung zu steigern.

Andere Tipps

Wenn Sie max wollen (image_one, image_two), die auf die HELLER Mischmodus.

Hier ist ein Ausschnitt aus Foundation Actionscript 3.0 Bildeffekte :

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

Sie können die benötigten Dateien wie aus dem Kapitel 2-Ordner der Quelle zip erhalten .

Mit Theo Rat mit

  • lock ()
  • für Schleifen
  • unlock ()

für Geschwindigkeit, mit BitmapData- oder Verwendung Pixelbender. Offenbar nach Adobe , mehr als 90% des Benutzers Flash Player bereits Verwendung Version 10.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top