Pregunta

Tengo dos objetos BitmapData con alfa canales. Me gustaría combinarlos en una sola mediante el uso de max (channel_image_one, channel_image_two) para cada canal, incluyendo el alfa. ¿Hay una manera fácil de lograr este resultado?

¿Fue útil?

Solución

No creo que haya sencillo método de BitmapData para fusionar el Chanel Alfa de esa manera. RGB tal vez podría hacer con la ayuda de empate () aplicar un modo de fusión, pero no creo que funcionaría si necesita un máximo estricta por Chanel).

Además, puede crear gracias a un shader PixelBender para realizar esta tarea. Es la herramienta perfecta para ese tipo de manipulaciones.

Más lento en el rendimiento pero más rápido de instalar si no usa para PB sólo podría iterar / comparación / escribir los píxeles uno por uno con BitmapData.getPixel32 () / setPixel32 (). En caso de que le vayan a hacer, pensar en usar BitmapData.lock () / desbloqueo () para aumentar el rendimiento.

Otros consejos

Si desea max (image_one, image_two) que debe ser equivalente a la LIGHTEN modo de mezcla.

A continuación se muestra un fragmento de Fundación ActionScript 3.0 Efectos de imagen :

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

Usted puede obtener la necesaria como archivos de la carpeta capítulo 2 de la postal fuente .

El consejo de Uso Theo con

  • bloqueo ()
  • para los lazos
  • desbloqueo ()

para la velocidad con BitmapData o uso PixelBender. Al parecer, según la Adobe , más del 90% de los usuarios de Flash Player ya uso versión 10.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top