摄像头拍照保存为图片

      应用场景:很多网站都有设置自己头像的功能,分为从本地上传图片和摄像头拍照功能。本篇主要讲解利用摄像头拍照保存头像,以后我还会讲解剪裁图像的功能实现。

  

     几个知识点的大概了解。

     flash.media.Camera 对象可以连接到用户的本地摄像头并在本地广播视频(播放给用户),播放视频用flash.media.Video对象。

 

     flash.display.BitmapData对象可以处理位图图像的数据。draw方法可以获得当前Video的图像数据。

 

     as3corelib中的com.adobe.images.JPGEncoder对象的

     encode(image:BitmapData):ByteArray
     方法可以将BitmapData对象转化为JPG图像。得到ByteArray后我们可以将数据传到服务器上或者保存到客户端。
     flash.net.FileReference对象可以保存jpg图片到本地。
    下面是一个大概的代码:
    
package
{
	
	
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.media.Camera;
	import flash.media.Video;
	import flash.net.FileReference;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.utils.ByteArray;
	
	import com.adobe.images.JPGEncoder;
	
	public class Test extends Sprite
	{
		public function Test()
		{
			
			init();
		}
		private var video:Video;//视频对象
		private var tf:TextField;//点击开始拍照
		
		
		public function init():void
		{
			if(Camera.names.length>0){
				var cam:Camera = Camera.getCamera(); 
				cam.setMode(400,300,10);//摄像头的宽度和高度
				cam.setQuality(0,100);//图像质量
				video=new Video(400,300);
				video.x=0;
				video.y=0;
				video.attachCamera(cam);
				addChild(video);
			}else{
				trace("用户没有可用摄像头");
				return ;
			}
			tf= new TextField(); 
			tf.x = 150;
			tf.y=310;
			tf.autoSize = TextFieldAutoSize.LEFT; 
			tf.text="点击我开始拍照";
			addChild(tf); 
			tf.addEventListener(MouseEvent.CLICK, savePic);
			
		}
		public function savePic(event:MouseEvent):void
		{
			
			var imageSource:BitmapData= new BitmapData(400,300);
			var matrix:Matrix=new Matrix();
			matrix.scale(1,1);//方法比例 由video和camera的宽高决定
			imageSource.draw(video,matrix);
			
			var file:FileReference= new FileReference();
			var jpegEncoder:JPGEncoder= new JPGEncoder(100);
			var imageDataArray:ByteArray=jpegEncoder.encode(imageSource);
			file.save(imageDataArray,"我的靓照.jpg");
			video.attachCamera(null);//关闭摄像头
			tf.removeEventListener(MouseEvent.CLICK,savePic);
		}  

		
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值