flash在线拍照并上传到后台(servlet)
发布时间:2020-12-15 17:52:39 所属栏目:百科 来源:网络整理
导读:一、flash在线拍照并上传到后台(servlet) ????? 第一步:先新建一个ActionScript文件:ShiBieFunction.as ????? 该文件的核心代码如下: ??????? =========使用摄像头获取视频流=========== //定义一个摄像头,他会搜索电脑是否存在摄像头,如果不存在则返
一、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,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,v); } outputStream.close(); inputStream.close(); }? 源代码获取可以从我的下载频道获取:http://download.csdn.net/my (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |