2012-05-17 21 views
5

Tengo un archivo actionscript simple con una cámara web y una imagen. Lo que quiero hacer es: cuando se hace clic en un botón, quiero capturar ese instante de cámara web e imagen y presentarlo en un DIV en el navegador. ¿Cómo lo capturo? Supongo que los mapas de bits deben ser utilizados. Quiero hacer esto a través del códigoCapturar fotos usando la cámara web usando Actionscript

Respuesta

6

Esto es lo que yo he escrito para responder a esta pregunta. Probado en Chrome, FF e IE9.

Necesita el codificador Base64 (uno es here) y el codificador png/jpg (por ejemplo, de la biblioteca Flex).

AS código:

package 
{ 
    import flash.display.BitmapData; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.external.ExternalInterface; 
    import flash.media.Camera; 
    import flash.media.Video; 

    [SWF(width="640", height="480", backgroundColor="#000000")] 
    public class CameraToJS extends Sprite 
    { 
     private var camera:Camera; 
     private var video:Video; 

     public function CameraToJS() 
     { 
      addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); 
      stage.addEventListener(MouseEvent.CLICK, saveSnapshot); 
     } 

     protected function addedToStageHandler(event:Event):void 
     { 
      camera = Camera.getCamera(); 
      video = new Video(); 
      video.attachCamera(camera); 
      addChild(video); 
     } 

     protected function saveSnapshot(event:MouseEvent):void 
     { 
      var bmData:BitmapData = new BitmapData(video.width, video.height); 
      bmData.draw(video); 

      var encoder:PNGEncoder = new PNGEncoder(); 

      ExternalInterface.call("image", Base64.encodeByteArray(encoder.encode(bmData))); 
     } 
    } 
} 

código Javascript:

function image(data) 
{ 
    document.getElementById("img").src = "data:image/png;base64,"+ data; 
} 
+0

Muchas gracias por su solución ¡Usted es maravilloso! Mi requisito era ligeramente diferente y pude utilizar una parte de su solución con mi código existente. En realidad, tuve algunos problemas con el codificador: resulta que en lugar de crear un codificador de objetos y usarlo en la siguiente línea, deberíamos usar PNGEncoder.encode (bmData). Además, ExternalInterface fue un poco problemático debido a algunas configuraciones de seguridad que me tomó un tiempo darme cuenta ya que estaba usando Chrome y solía fallar silenciosamente en Chrome. Vi el error en Firefox y lo solucioné. –

+0

Me alegro de haber podido ayudar =) – Art

0

Este enlace puede ayudarlo, hace exactamente lo que quiere.

http://www.xarg.org/project/jquery-webcam-plugin/

+0

Gracias ymutlu, que ya había visto esta solución. En realidad, primero estoy procesando la imagen desde la cámara web y luego coloco la imagen afuera. Entonces no pude usar esto ya que el archivo swf ya está generado en este caso. –

Cuestiones relacionadas