`
yunzhongxia
  • 浏览: 639880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

摄像头拍照保存为图片

阅读更多

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

  

     几个知识点的大概了解。

     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);
		}  

		
	}
}
 
0
0
分享到:
评论
1 楼 hzaccp 2011-08-10  
有例子吗?

相关推荐

Global site tag (gtag.js) - Google Analytics