2012-05-17 2 views
5

웹캠과 이미지가있는 간단한 액션 스크립트 파일이 있습니다. 내가 원하는 것은 버튼을 클릭하면 웹캠과 이미지의 순간을 캡처하여 브라우저의 DIV로 렌더링하려고합니다. 어떻게 캡처합니까? 나는 bitmapdata가 사용될 필요가 있다고 짐작하고있다. 코드를 통해이 작업을 수행하고 싶습니다.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))); 
     } 
    } 
} 

자바 스크립트 코드 :

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 파일이 이미 생성되었으므로 사용할 수 없습니다. –

관련 문제