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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1.功能 摄像头控件用于在Web编程中辅助您完成图像采集、截图,并上传到服务器当中,支持USB外置摄像头、内置摄像头及部分型号高拍仪设备. 该摄像头控件工作在客户端浏览器中,支持多种服务器端编程技术及部署环境,支持asp、jsp、php、asp.net等常见的服务器端编程技术,图像采集结果支持jpg和bmp格式图片。 2.控件集成jsp,asp,html,php使用说明 控件以cab压缩包格式发行,在项目中集成控件时需要复制cab文件到项目中,然后在需要进行图像采集的页面中使用<object></object>的方式引入该控件。完整的引用控件的示例如下: 1 <object classid="clsid:1122dfdf-5fds6-4fds-8fds2-947fdsfdsfds8" 2 3 id="Camer" codebase="http://127.0.0.1:8080/imagesUpload/demo.cab#version=1,0,0,8" width="500px" height="400px"> 4 5 </object> 上面的示例演示了如何在项目的页面中引用控件,注意红色标示的部分用于确定控件cab压缩包所在路径,要结合项目中的目录划分自行制定到控件压缩包的路径。 除了要在html页面中引入控件以外,客户端浏览器在访问控件所在页面时,需要提前调整浏览器设定,需要启用 ActiveX技术,因控件未进行数字签名,因此需要启用浏览器的“未签名 ActiveX下载提示”功能及“未签名ActiveX运行提示”功能. 注意:首次运行时,当浏览器有阻止运行,请允许运行 3.控件方法调用说明 01 //启动摄像头 02 Camer.initCamer(0,10); 03 //点击拍照 04 Camer.TakePhoto("D:/test1.bmp"); 05 //关闭摄像头 06 Camer.CloseDev(); 07 //上传拍照的相片 08 Camer.UpFileNew("D:/test1.bmp","http://127.0.0.1:8080/imagesUpload/upload.jsp"); 09 10 //删除本地照片 11 Camer.DeleteFile("D:/test1.bmp");

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值