flex 4 摄像头拍照


<?xml version="1.0" encoding="utf-8"?>  
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
               xmlns:s="library://ns.adobe.com/flex/spark"   
               xmlns:mx="library://ns.adobe.com/flex/mx"   
               minWidth="955" minHeight="600">  
    <fx:Script>  
        <![CDATA[  
            import mx.events.CloseEvent;  
            import mx.rpc.events.FaultEvent;  
            import mx.rpc.events.ResultEvent;  
            import mx.controls.Alert;  
              
            private static const DEFAULT_CAMERA_WIDTH:Number = 320;  
            private static const DEFAULT_CAMERA_HEIGHT:Number = 240;  
              
            //定义一个摄像头  
            private var camera:Camera;   
            //定义一个本地视频  
            private var localVideo:Video;   
            //定义视频截图  
            private var videoBitmapData:BitmapData;   
              
              
            //初始化摄像头  
            private function initCamera():void  
            {  
                //打开摄像头  
                camera = Camera.getCamera("0");  
                if(camera == null && Camera.names.length <= 0                                                             )  
                {  
                    Alert.show("没有找到摄像头,是否重新查找!", "提示", Alert.OK|Alert.NO, this, onInitCamera);  
                    return;  
                }  
                  
                camera.addEventListener(StatusEvent.STATUS,onCameraStatusHandler);  
                //将摄像头的捕获模式设置为最符合指定要求的本机模式.  
                camera.setMode(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT,30);  
                //设置每秒的最大带宽或当前输出视频输入信号所需的画面质量  
                camera.setQuality(144,85);  
                localVideo = new Video();  
                localVideo.width = DEFAULT_CAMERA_WIDTH;  
                localVideo.height = DEFAULT_CAMERA_HEIGHT;  
                //正在捕获视频数据的 Camera 对象  
                localVideo.attachCamera(camera);  
                cameraVideo.addChild(localVideo);  
                //USB 视频设备  
                trace(Camera.names.length+"");  
            }  
              
            //拍照按钮事件,进行视频截图  
            private function snapshotPicture():void  
            {  
                videoBitmapData = new BitmapData(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT);  
                videoBitmapData.draw(cameraVideo,new Matrix());  
                  
                var videoBitmap:Bitmap = new Bitmap(videoBitmapData);  
                imgPicture.addChild(videoBitmap);  
//              imgPicture.source = videoBitmap;  
            }  
              
              
            //检测摄像头权限事件  
            private function onCameraStatusHandler(event:StatusEvent):void  
            {  
                if(!camera.muted)  
                {  
                    shootingBtn.enabled = true;  
                }  
                else  
                {  
                    Alert.show("无法链接到活动摄像头,是否重新检测,请充许使用摄像头!", "提示", Alert.OK|Alert.NO, this, onInitCamera);  
                }  
                camera.removeEventListener(StatusEvent.STATUS, onCameraStatusHandler);  
            }  
              
            //当摄像头不存在,或连接不正常时重新获取  
            private function onInitCamera(event:CloseEvent):void  
            {  
                if(event.detail == Alert.OK)  
                {  
                    initCamera();  
                }  
            }  
              
        ]]>  
    </fx:Script>  
      
    <s:Group x="10" y="10" height="600" width="800">  
        <s:Panel title="视频拍照" backgroundColor="#00ffffff" cornerRadius="0" width="340" height="325" >  
            <s:Group width="320" height="240">  
                <s:VideoDisplay x="0" y="0" width="320" height="240" id="cameraVideo" />  
            </s:Group>  
            <s:controlBarContent>  
                <s:Button id="shootingBtn" label="拍照" click="snapshotPicture()"/>  
                <s:Button id="connectionBtn" label="连接" click="initCamera()"/>  
            </s:controlBarContent>  
        </s:Panel>  
          
        <s:Panel title="拍照图片" x="360" y="10" width="180" height="200" >  
            <s:Image id="imgPicture" x="0" y="0" width="160" height="120" />  
        </s:Panel>  
    </s:Group>  
</s:Application>  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值