2012-05-17 10 views
5

Ich habe eine einfache ActionScript-Datei mit einer Webcam und einem Bild. Was ich zu tun versuche, ist - wenn eine Schaltfläche geklickt wird, möchte ich den Augenblick der Webcam und des Bildes erfassen und es in einem DIV im Browser rendern. Wie erfasse ich es? Ich vermute, die Bitmapdaten müssen verwendet werden. Ich möchte dies über den CodeCapture Foto mit Webcam mit Actionscript

Antwort

6

Hier ist, was ich selbst geschrieben habe, diese Frage zu beantworten. Getestet in Chrome, FF und IE9.

Sie benötigen Base64-Encoder (einer ist here) und Png/Jpg-Encoder (zum Beispiel aus Flex-Bibliothek).

AS-Code:

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))); 
     } 
    } 
} 

Javascript-Code:

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

Vielen Dank für Ihre Lösung. Du bist toll! Meine Anforderung war etwas anders und ich konnte einen Teil Ihrer Lösung mit meinem vorhandenen Code verwenden. Eigentlich hatte ich ein bisschen Probleme mit dem Encoder - es stellt sich heraus, anstatt einen Objekt-Encoder zu erstellen und ihn in der nächsten Zeile zu verwenden, sollten wir stattdessen PNGEncoder.encode (bmData) verwenden. Auch das ExternalInterface war etwas problematisch wegen einiger Sicherheitseinstellungen, die ich brauchte, um herauszufinden, seit ich Chrome benutze und es in Chrome stumm gescheitert ist. Ich habe den Fehler in Firefox gesehen und behoben. –

+0

Froh ich könnte helfen =) – Art

0

tun Dieser Link kann Ihnen helfen, tut genau das, was Sie wollen.

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

+0

Dank ymutlu, ich hatte diese Lösung bereits gesehen. Eigentlich verarbeite ich zuerst das Bild von der Webcam und setze dann das Bild nach draußen. Also konnte ich das nicht verwenden, da die swf-Datei in diesem Fall bereits generiert wurde. –

Verwandte Themen