使用Actionscript使用网络摄像头拍摄照片

时间:2012-05-17 09:47:42

标签: flash actionscript

我有一个带有网络摄像头和图像的简单actionscript文件。我要做的是 - 当点击一个按钮时,我想捕获网络摄像头和图像的瞬间,并在浏览器的DIV中呈现它。我该如何捕获它?我猜测需要使用bitmapdata。我想通过代码

来做到这一点

2 个答案:

答案 0 :(得分:6)

这是我自己写的回答这个问题的内容。在Chrome,FF和IE9中测试过。

您需要Base64编码器(一个是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;
}

答案 1 :(得分:0)

此链接可以帮助您,完全符合您的要求。

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