2012-05-17 33 views
5

Tôi có tệp tác vụ đơn giản với webcam và hình ảnh. Những gì tôi đang tìm kiếm để làm là - khi một nút được nhấp, tôi muốn nắm bắt tức thì của webcam và hình ảnh và hiển thị nó trong một DIV trên trình duyệt. Làm cách nào để chụp? Tôi đoán bitmapdata cần phải được sử dụng. Tôi muốn thực hiện điều này qua mã sốChụp ảnh bằng Webcam bằng cách sử dụng Actionscript

Trả lời

6

Đây là những gì tôi đã viết để trả lời câu hỏi này. Được thử nghiệm trong Chrome, FF và IE9.

Bạn cần bộ mã hóa Base64 (một là here) và bộ mã hóa png/jpg (ví dụ từ thư viện Flex).

AS mã:

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

mã Javascript:

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

Cảm ơn rất nhiều về giải pháp của bạn Art. Bạn thật tuyệt vời! Yêu cầu của tôi hơi khác một chút và tôi có thể sử dụng một phần giải pháp của bạn với mã hiện có của tôi. Trên thực tế, tôi đã có một chút rắc rối với bộ mã hóa - hóa ra thay vì tạo bộ mã hóa đối tượng và sử dụng nó trong dòng tiếp theo, chúng ta nên sử dụng PNGEncoder.encode (bmData) để thay thế. Ngoài ra, ExternalInterface hơi phiền phức vì một số cài đặt bảo mật đã khiến tôi mất một thời gian để tìm ra từ khi tôi đang sử dụng Chrome và nó không hoạt động âm thầm trong Chrome. Tôi đã thấy lỗi trong Firefox và sửa nó. –

+0

Vui vì tôi có thể giúp =) – Art

0

Liên kết này có thể giúp bạn, thực hiện chính xác những gì bạn muốn.

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

+0

Cảm ơn ymutlu, tôi đã nhìn thấy giải pháp này. Thực ra tôi đang xử lý hình ảnh từ webcam trước rồi đưa hình ảnh ra ngoài. Vì vậy, tôi không thể sử dụng điều này vì tệp swf đã được tạo trong trường hợp này. –

Các vấn đề liên quan