flash在线拍照并上传到后台(servlet)

一、flash在线拍照并上传到后台(servlet)

      第一步:先新建一个ActionScript文件:ShiBieFunction.as

      该文件的核心代码如下:

        =========使用摄像头获取视频流===========

//定义一个摄像头,他会搜索电脑是否存在摄像头,如果不存在则返回一个null
var cam:Camera = Camera.getCamera();
if(null == cam){
    trace("====没有找到摄像头=====");
}else{
   //然后调用其setModel()方法将摄像头捕获模式设置为指定要求的本机模式,
   //参数说明如下:width/height说明捕获图片的宽高,cam_speed是捕获的帧频,true表示是否将捕获模式设置为最符合指定要求的本机模式
   cam.setModel(width,height,cam_speed,true);
   //摄像头若要实际开始捕获视频,必须将Camera对象附加到Video对象,因此需要一个Video对象
   var video:Video = new Video(width,height);
   //attacheCamera()指定将在舞台上的video对象的边界内显示视频流
   video.attacheCamera(cam);
   //将video对象添加到舞台
   addChild(video);
}

        =======获取视频流中某一数据=======

//构建数据对象(大数据对象)
var bitmapData:BitmapData = new BitmapData(video_width,video_height);
var bitmap:Bitmap = new Bitmap(bitmapData);
//通过以上代码可以获取摄像头在video中的图片的大小,如果想只获取其中的某一部分,还可以进一步定义一个矩形
var jieQuBitmapRec=new Rectangle(x,y,width,height);
//捕获图片
bitmapData.draw(video,null,null,jieQuBitmapRec,false);

    

     =============将获取的图片信息转换成图片并上传到后台==========

			// 配置 URLRequest, 设置目标路径, 设置提交的数据, 方法 (POST / GET)
			var requestHeader:URLRequestHeader=new URLRequestHeader("Content-type","application/octet-stream");
			var req:URLRequest=new URLRequest("http://192.168.1.109:8080/ccc/ReciveFlashDataServlet");
			var loader:URLLoader = new URLLoader();
			req.method=URLRequestMethod.POST;
			req.requestHeaders.push(requestHeader);
			loader.dataFormat=URLLoaderDataFormat.BINARY;//数据的传输使用二进制

      这里使用JPGEncoder将摄像头捕获的图像数据转成图片jpg数据,将JPGEncode.as放置到与代码所在目录下
      //
      var jpegE:JPGEncoder=new JPGEncoder(100);
      var imgData:ByteArray = jpegE.encoder(bitmapData);

     //然后将图片二级制数组数据附着到请求上
     req.data = imgData;
     //发送请求
     loader.load(req);

===============后台代码编写(一个简单的Servlet)==================

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException
	{
		index++;
		System.out
				.println("ReciveFlashDataServlet data ....  index : " + index);
		File file = new File("c:\\tempJPG\\" + index + ".jpg");
		BufferedInputStream inputStream = new BufferedInputStream(
				req.getInputStream());
		FileOutputStream outputStream = new FileOutputStream(file);
		byte[] bytes = new byte[1024];
		
		int v =0;
		while ((v = inputStream.read(bytes)) > 0)
		{
			outputStream.write(bytes, 0, v);
		}
		outputStream.close();
		inputStream.close();
	}

  源代码获取可以从我的下载频道获取:http://download.csdn.net/my


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值