2012-05-17 9 views
5

私はウェブカメラと画像を備えたシンプルなアクションスクリプトファイルを持っています。私がやってみたいのは、ボタンをクリックすると、その時点のウェブカメラと画像をキャプチャして、ブラウザのDIVでレンダリングしたいのです。どのように私はそれをキャプチャするのですか?私はビットマップデータを使用する必要があると推測しています。私はコードを介してこれをしたいActionscriptを使用してウェブカメラを使用して写真をキャプチャ

答えて

6

は、ここで私はこの質問に答えるために自分自身を書いたものです。 Chrome、FF、IE9でテスト済みです。

Base64エンコーダ(1つはhere)とpng/jpgエンコーダ(Flexライブラリなど)が必要です。コードAS

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コード:

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

あなたのソリューションアートに感謝します。あなたは素晴らしいです! 私の要件はわずかに異なり、既存のコードでソリューションの一部を使用することができました。実際、私はエンコーダに少し問題がありました。オブジェクトエンコーダを作成して次の行に使用する代わりに、代わりにPNGEncoder.encode(bmData)を使用する必要があります。 また、ExternalInterfaceは、私がChromeを使用していたときから分かっていたセキュリティ設定のために、少し面倒でした。これはChromeで静かに失敗していました。 Firefoxのエラーを見て修正しました。 –

+0

喜んで助けることができます=) – Art

0

このリンクは、あなたが望むものを、あなたに役立つかもしれません。

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

+0

おかげymutluは、私はすでにこのソリューションを見ていました。実際には、まずウェブカメラから画像を処理してから、画像を外に出しています。だから、この場合はswfファイルが既に生成されているので、私はこれを使うことができませんでした。 –

関連する問題