flex捕获摄像头拍照

flex:

XML code
   
   
<? xml version="1.0" encoding="utf-8" ?> < mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" layout ="absolute" width ="388" height ="222" creationComplete ="initApp()" > < mx:Style > Alert{font-size:12px;} </ mx:Style > < mx:Script > <![CDATA[ import mx.graphics.codec.JPEGEncoder; 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 = 160; //摄像头显示宽度 private static const DEFAULT_CAMERA_HEIGHT:Number = 120; //摄像头显示高度 private var m_camera:Camera; //定义一个摄像头 private var m_localVideo:Video; //定义一个本地视频 private var m_pictureBitmapData:BitmapData //定义视频截图 [Bindable] private var m_pictureData:String; [Bindable] private var m_pictureBitmap:Bitmap; private function initApp():void { /* t_btn_Shooting.enabled = false; t_ban_Save.enabled = false; */ initCamera(); } private function initCamera():void { m_camera = Camera.getCamera(); if(m_camera != null) { m_camera.addEventListener(StatusEvent.STATUS,__onCameraStatusHandler); m_camera.setMode(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT,30); m_localVideo = new Video(); m_localVideo.width = DEFAULT_CAMERA_WIDTH; m_localVideo.height = DEFAULT_CAMERA_HEIGHT; m_localVideo.attachCamera(m_camera); t_vd_Video.addChild(m_localVideo); } else { Alert.show("没有找到摄像头,是否重新查找。","提示:",Alert.OK|Alert.NO,this,__InitCamera); return; } } //拍照按钮事件,进行视频截图 private function SnapshotPicture():void { m_pictureBitmapData = new BitmapData(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT); m_pictureBitmapData.draw(t_vd_Video,new Matrix()); m_pictureBitmap = new Bitmap(m_pictureBitmapData); t_img_Picture.addChild(m_pictureBitmap); t_panel_Picture.visible = true; t_ban_Save.enabled = true; } //保存按钮事件,保存视频截图 private var file:FileReference = new FileReference(); private function SavePicture():void { var jpg:JPEGEncoder = new JPEGEncoder(); var ba:ByteArray = jpg.encode(m_pictureBitmapData); file.save(ba,'1.jpg'); /* var copyfile:FileReference = file; var request: URLRequest = new URLRequest(); request.url="upphotoservlet"; request.method = "post"; copyfile.upload(request); // 将拍摄的照片上传至服务器 */ } //检测摄像头权限事件 private function __onCameraStatusHandler(event:StatusEvent):void { if(!m_camera.muted) { t_btn_Shooting.enabled = true; } else { Alert.show("无法链接到活动摄像头,是否重新检测。","提示:",Alert.OK|Alert.NO,this,__InitCamera); } m_camera.removeEventListener(StatusEvent.STATUS,__onCameraStatusHandler); } //当摄像头不存在,或连接不正常时重新获取 private function __InitCamera(event:CloseEvent):void { if(event.detail == Alert.OK) { initApp(); } } //WebService保存图片成功事件 private function __onSavePictureResult(event:ResultEvent):void { //trace(event.result); if(event.result.toString() == "保存成功") { Alert.show(event.result.toString(),"提示",Alert.OK,this,__onAlertCloseHandler); } else { Alert.show(event.result.toString(),"提示",Alert.OK); } } //保存图片成功后的弹出窗口确认事件 private function __onAlertCloseHandler(event:CloseEvent):void { if(event.detail == Alert.OK) { //trace("转向页面"); } } ]]> </ mx:Script > < mx:Panel x ="10" y ="10" width ="180" height ="200" layout ="absolute" title ="视频拍照" fontSize ="12" > < mx:VideoDisplay id ="t_vd_Video" width ="160" height ="120" /> < mx:ControlBar horizontalAlign ="right" > < mx:Button id ="t_btn_Shooting" label ="拍照" click ="SnapshotPicture()" /> </ mx:ControlBar > </ mx:Panel > < mx:Panel id ="t_panel_Picture" x ="198" y ="10" width ="180" height ="200" layout ="absolute" title ="拍照图片" fontSize ="12" visible ="false" > < mx:Image id ="t_img_Picture" x ="0" y ="0" width ="160" height ="120" /> < mx:ControlBar horizontalAlign ="right" > < mx:Button id ="t_ban_Save" label ="保存" click ="SavePicture()" /> </ mx:ControlBar > </ mx:Panel > </ mx:Application >

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值