1、Flex 视频 图象 处理Flex采集摄像头照片-增加裁剪功能由于系统中用到的flex采集照片需要裁减功能,就把前几天搜到的Flex源码进行了修改,实现了裁减功能,不过做的比较简单,呵呵!Flex部分: Alertfont-size:12px; !CDATA import mx.events.CloseEvent; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.controls.Alert; private static const DEFAULT_CAMERA_WIDTH:Number
2、 = 320; private static const DEFAULT_CAMERA_HEIGHT:Number = 240; private static const DEFAULT_WEBSERVICE_URL:String = http:/localhost:50338/WebSite1/WebService.asmx?WSDL; /WebService地址 private var m_camera:Camera; /定义一个摄像头 private var m_localVideo:Video; /定义一个本地视频 private var m_pictureBitmapData:Bit
3、mapData /定义视频截图 public static var MoveMouseblnMove:Boolean = false; public static var blnMove:Boolean = false; Bindable private var m_pictureData:String; private function initApp():void t_btn_Shooting.enabled = false; t_ban_Save.enabled = false; initMouseEvent(); initCamera(); /初始化摄像头 private functi
4、on initCamera():void m_camera = Camera.getCamera(); if(m_camera != null) m_camera.addEventListener(StatusEvent.STATUS,_onCameraStatusHandler); m_camera.setMode(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT,30); m_localVideo = new Video(); m_localVideo.width = DEFAULT_CAMERA_WIDTH; m_localVideo.height =
5、 DEFAULT_CAMERA_HEIGHT; m_localVideo.attachCamera(m_camera); t_vd_Video.addChild(m_localVideo); else Alert.show(没有找到摄像头,是否重新查找。,提示:,Alert.OK|Alert.NO,this,_InitCamera); return; /拍照按钮事件,进行视频截图 private function SnapshotPicture():void var r: Rectangle = new Rectangle(this.t_cv_canvasResize.x, this.t_cv
6、_canvasResize.y, this.t_cv_canvasResize.width, this.t_cv_canvasResize.height); var m: Matrix = new Matrix(1, 0, 0, 1, -Math.ceil(r.x), -Math.ceil(r.y); m_pictureBitmapData = new BitmapData(Math.floor(r.width), Math.floor(r.height); m_pictureBitmapData.draw(t_vd_Video,m); var m_pictureBitmap:Bitmap =
7、 new Bitmap(m_pictureBitmapData); t_img_Picture.addChild(m_pictureBitmap); t_panel_Picture.visible = true; t_ban_Save.enabled = true; /保存按钮事件,保存视频截图 /通过WebService保存 private function SavePicture():void m_pictureData = ; for(var i:int = 0; i this.t_cv_canvasResize.width; i+) for(var j:int = 0; j 0) m_
8、pictureData += , + m_pictureBitmapData.getPixel32(i,j).toString(); else m_pictureData = m_pictureBitmapData.getPixel32(i,j).toString(); t_ws_SavePicture.SavePicture.send(); /检测摄像头权限事件 private function _onCameraStatusHandler(event:StatusEvent):void if(!m_camera.muted) t_btn_Shooting.enabled = true; e
9、lse Alert.show(无法链接到活动摄像头,是否重新检测。,提示:,Alert.OK|Alert.NO,this,_InitCamera); m_camera.removeEventListener(StatusEvent.STATUS,_onCameraStatusHandler); /当摄像头不存在,或连接不正常时重新获取 private function _InitCamera(event:CloseEvent):void if(event.detail = Alert.OK) initApp(); /WebService保存图片成功事件 private function _on
10、SavePictureResult(event:ResultEvent):void /trace(event.result); if(event.result.toString() = 保存成功) Alert.show(event.result.toString(),提示,Alert.OK,this,_onAlertCloseHandler); else Alert.show(event.result.toString(),提示,Alert.OK); /连接WebService失败事件 private function _onSavePictureFault(event:FaultEvent)
11、:void /Alert.show(event.fault.toString(),提示,Alert.OK); Alert.show(连接WebService失败。,提示,Alert.OK); /保存图片成功后的弹出窗口确认事件 private function _onAlertCloseHandler(event:CloseEvent):void if(event.detail = Alert.OK) /trace(转向页面); /添加鼠标事件监听 public function initMouseEvent() : void this.t_cv_canvasResize.addEventLi
12、stener(MouseEvent.MOUSE_DOWN, this.MoveMouseDownHandler); this.t_cv_canvasResize.addEventListener(MouseEvent.MOUSE_UP, this.MoveMouseUpHandler); this.t_cv_canvasParent.addEventListener(MouseEvent.ROLL_OUT, this.ParentMouseOverHandler); this.t_cv_canvasParent.addEventListener(MouseEvent.MOUSE_UP, thi
13、s.ParentMouseOverHandler); return; / end function public function MoveMouseDownHandler(event:MouseEvent) : void MoveMouseblnMove = true; var _loc_2:Rectangle = new Rectangle(); _loc_2.width = this.t_vd_Video.width - this.t_cv_canvasResize.width; _loc_2.height = this.t_vd_Video.height - this.t_cv_can
14、vasResize.height; this.t_cv_canvasResize.startDrag(false, _loc_2); return; / end function public function MoveMouseUpHandler(event:MouseEvent) : void this.t_cv_canvasResize.stopDrag(); MoveMouseblnMove = true; return; / end function public function ParentMouseOverHandler(event:MouseEvent) : void thi
15、s.t_cv_canvasResize.stopDrag(); blnMove = false; MoveMouseblnMove = false; return; / end function this.t_cv_canvasResize.width this.t_cv_canvasResize.height m_pictureData WebService部分: WebMethod public string SavePicture(int pic_width, int pic_height, string bitmap_data) try Bitmap m_pic = new Bitma
16、p(pic_width, pic_height); string m_tempPics = bitmap_data.Split(,); for (int i = 0; i pic_width; i+) for (int j = 0; j 24 & 0xFF); int pic_r = (int)(pic_argb 16 & 0xFF); int pic_g = (int)(pic_argb 8 & 0xFF); int pic_b = (int)(pic_argb & 0xFF); m_pic.SetPixel(i, j, Color.FromArgb(pic_a, pic_r, pic_g,
17、 pic_b); string filePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + Photo; /判断路径是否存在,若不存在则创建路径 DirectoryInfo upDir = new DirectoryInfo(filePath); if (!upDir.Exists) upDir.Create(); /生成随机文件名 Random objRand = new Random(); DateTime date = DateTime.Now; /生成随机文件名 string saveName = date
18、.Year.ToString() + date.Month.ToString() + date.Day.ToString() + date.Hour.ToString() + date.Minute.ToString() + date.Second.ToString() + Convert.ToString(objRand.Next(99) * 97 + 100); string fileName = saveName + .jpg; m_pic.Save(filePath + fileName, ImageFormat.Jpeg); return 保存成功; catch (Exception
19、 ex) return ex.Message; flex摄像头拍照 java上传到数据库public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html;charset=UTF-8); response.setHeader(Pragma, No-cache); response.setHeader(Cache-Control, no-cache); r
20、esponse.setDateHeader(Expires, 0); String bitmap_data = request.getParameter(bitmap_data); int width = commons.getRequestInt(request.getParameter(width),0); int height = commons.getRequestInt(request.getParameter(height),0); BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT
21、_RGB); try int w = width; int h = height; int pixels = new intw * h; String m_tempPics = bitmap_data.split(,); for (int x = 0; x w; x+) for (int y = 0; y 24 & 0xFF); int r = (int) (pic_argb 16 & 0xFF); /右移16位 ,取后8位; int g = (int) (pic_argb 8 & 0xFF); int b = (int) (pic_argb & 0xFF); pixelsy * w + x
22、= new Color(r, g, b, a).getRGB(); img.setRGB(0, 0, w, h, pixels, 0, w); img.flush(); ByteArrayOutputStream bao = new ByteArrayOutputStream(); ImageIO.write(img, jpg, bao); byte data = bao.toByteArray(); Personimage user = new Personimage(); user.setFileContent(data); PersonimageDAO hm = new Personim
23、ageDAO(); hm.save(user); PersonrelationDAO prm = new PersonrelationDAO(); Personrelation pr = prm.findById(new Long(personRelationId); pr.setPersonimageid(user.getId(); pr.setImageflag(1); prm.update(pr); str.append(保存成功); catch (Exception e) e.printStackTrace(); str.append(保存失败); response.setContentType(text/xml); response.getWriter().write(str.toString(); flex视频录制import mx.events.SliderEvent;import mx.events.VideoEvent;import mx.collections.ArrayCollect
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1