2012-05-17 85 views
5

Web kameramı ve resmi içeren basit bir actioncript dosyasına sahibim. Yapmak istediğim şey - bir düğmeye tıklandığında, web kamerası ve görüntüyü o anda yakalamak ve tarayıcıda bir DIV içinde oluşturmak istiyorum. Onu nasıl yakalarım? Bitmapdata'nın kullanılması gerektiğini tahmin ediyorum. BunuKamerayı Webcam kullanarak kullanarak fotoğraf çekimi yapın.

cevap

6

İşte bu soruya cevap kendimi yazdım zaten. Chrome, FF ve IE9’da test edildi.

Base64 kodlayıcısına (bir here) ve png/jpg kodlayıcısına (örneğin Flex kitaplığından) ihtiyacınız vardır. AS kodu

:

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 kodu:

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

Çözümünüz için çok teşekkürler Art. Harikasın! Şartım biraz farklıydı ve çözümün bir kısmını mevcut kodumla kullanabildim. Aslında kodlayıcıyla ilgili bir sorunum vardı - bir nesne kodlayıcı oluşturup bir sonraki satırda kullanmak yerine, PNGEncoder.encode (bmData) kullanmalıyız. Ayrıca, ExternalInterface, Chrome'u kullandığımdan bu yana anlamaya karar vermem gereken bazı güvenlik ayarları nedeniyle biraz zahmetliydi ve Chrome'da sessizce başarısız oluyordu. Firefox'taki hatayı gördüm ve düzeltdim. –

+0

Glad I yardım edebilirim =) – Art

0

üzerinden yapmak istiyorum. Bu bağlantı size yardımcı olabilir, tam olarak ne istediğinizi yapar.

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

+0

Teşekkür ymutlu, ben zaten bu çözümü görmüştü. Aslında görüntüyü önce web kamerasından işliyorum ve sonra görüntüyü dışarıya koyuyor. Bu yüzden, bu durumda swf dosyası zaten oluşturulduğundan bunu kullanamadım. –