flex 4 摄像头拍照

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值