Flex 视频 图象处理.docx
- 文档编号:30146171
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:38
- 大小:27.23KB
Flex 视频 图象处理.docx
《Flex 视频 图象处理.docx》由会员分享,可在线阅读,更多相关《Flex 视频 图象处理.docx(38页珍藏版)》请在冰豆网上搜索。
Flex视频图象处理
Flex采集摄像头照片----增加裁剪功能
由于系统中用到的flex采集照片需要裁减功能,就把前几天搜到的Flex源码进行了修改,实现了裁减功能,不过做的比较简单,呵呵!
Flex部分:
xmlversion="1.0"encoding="utf-8"?
>
Applicationxmlns: mx="layout="absolute"creationComplete="initApp()"> Style> Alert{font-size: 12px;} Style> Script> [CDATA[ importmx.events.CloseEvent; importmx.rpc.events.FaultEvent; importmx.rpc.events.ResultEvent; importmx.controls.Alert; privatestaticconstDEFAULT_CAMERA_WIDTH: Number=320; privatestaticconstDEFAULT_CAMERA_HEIGHT: Number=240; privatestaticconstDEFAULT_WEBSERVICE_URL: String="http: //localhost: 50338/WebSite1/WebService.asmx? WSDL";//WebService地址 privatevarm_camera: Camera;//定义一个摄像头 privatevarm_localVideo: Video;//定义一个本地视频 privatevarm_pictureBitmapData: BitmapData//定义视频截图 publicstaticvarMoveMouseblnMove: Boolean=false; publicstaticvarblnMove: Boolean=false; [Bindable] privatevarm_pictureData: String; privatefunctioninitApp(): void { t_btn_Shooting.enabled=false; t_ban_Save.enabled=false; initMouseEvent(); initCamera(); } //初始化摄像头 privatefunctioninitCamera(): 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=newVideo(); m_localVideo.width=DEFAULT_CAMERA_WIDTH; m_localVideo.height=DEFAULT_CAMERA_HEIGHT; m_localVideo.attachCamera(m_camera); t_vd_Video.addChild(m_localVideo); } else { Alert.show("没有找到摄像头,是否重新查找。 ","提示: ",Alert.OK|Alert.NO,this,__InitCamera); return; } } //拍照按钮事件,进行视频截图 privatefunctionSnapshotPicture(): void { varr: Rectangle=newRectangle(this.t_cv_canvasResize.x,this.t_cv_canvasResize.y,this.t_cv_canvasResize.width,this.t_cv_canvasResize.height); varm: Matrix=newMatrix(1,0,0,1,-Math.ceil(r.x),-Math.ceil(r.y)); m_pictureBitmapData=newBitmapData(Math.floor(r.width),Math.floor(r.height)); m_pictureBitmapData.draw(t_vd_Video,m); varm_pictureBitmap: Bitmap=newBitmap(m_pictureBitmapData); t_img_Picture.addChild(m_pictureBitmap); t_panel_Picture.visible=true; t_ban_Save.enabled=true; } //保存按钮事件,保存视频截图 //通过WebService保存 privatefunctionSavePicture(): void { m_pictureData=""; for(vari: int=0;i { for(varj: int=0;j { if(m_pictureData.length>0) { m_pictureData+=","+m_pictureBitmapData.getPixel32(i,j).toString(); } else { m_pictureData=m_pictureBitmapData.getPixel32(i,j).toString(); } } } t_ws_SavePicture.SavePicture.send(); } //检测摄像头权限事件 privatefunction__onCameraStatusHandler(event: StatusEvent): void { if(! m_camera.muted) { t_btn_Shooting.enabled=true; } else { Alert.show("无法链接到活动摄像头,是否重新检测。 ","提示: ",Alert.OK|Alert.NO,this,__InitCamera); } m_camera.removeEventListener(StatusEvent.STATUS,__onCameraStatusHandler); } //当摄像头不存在,或连接不正常时重新获取 privatefunction__InitCamera(event: CloseEvent): void { if(event.detail==Alert.OK) { initApp(); } } //WebService保存图片成功事件 privatefunction__onSavePictureResult(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失败事件 privatefunction__onSavePictureFault(event: FaultEvent): void { //Alert.show(event.fault.toString(),"提示",Alert.OK); Alert.show("连接WebService失败。 ","提示",Alert.OK); } //保存图片成功后的弹出窗口确认事件 privatefunction__onAlertCloseHandler(event: CloseEvent): void { if(event.detail==Alert.OK) { //trace("转向页面"); } } //添加鼠标事件监听 publicfunctioninitMouseEvent(): void { this.t_cv_canvasResize.addEventListener(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,this.ParentMouseOverHandler); return; }//endfunction publicfunctionMoveMouseDownHandler(event: MouseEvent): void { MoveMouseblnMove=true; var_loc_2: Rectangle=newRectangle(); _loc_2.width=this.t_vd_Video.width-this.t_cv_canvasResize.width; _loc_2.height=this.t_vd_Video.height-this.t_cv_canvasResize.height; this.t_cv_canvasResize.startDrag(false,_loc_2); return; }//endfunction publicfunctionMoveMouseUpHandler(event: MouseEvent): void { this.t_cv_canvasResize.stopDrag(); MoveMouseblnMove=true; return; }//endfunction publicfunctionParentMouseOverHandler(event: MouseEvent): void { this.t_cv_canvasResize.stopDrag(); blnMove=false; MoveMouseblnMove=false; return; }//endfunction ]]> Script> WebServiceid="t_ws_SavePicture"showBusyCursor="true"wsdl="{DEFAULT_WEBSERVICE_URL}"useProxy="false"result="__onSavePictureResult(event)"fault="__onSavePictureFault(event)"> operationname="SavePicture"> request> request> operation> WebService> Canvasheight="600"id="t_ca_Camera"width="800"x="10"y="10"> Panelid="t_panel_shoot_Picture"backgroundColor="#00ffffff"borderStyle="none"color="#00333333"cornerRadius="0"fontSize="12"height="325"layout="absolute"themeColor="16777215"title="视频拍照"width="340"> Canvasheight="240"id="t_cv_canvasParent"width="320"> VideoDisplayheight="240"id="t_vd_Video"width="320"x="0"y="0"/> CanvasbackgroundAlpha="0.05"backgroundColor="#00333333"borderColor="9145227"borderStyle="solid"height="120"id="t_cv_canvasResize"visible="true"width="160"x="30"y="30"/> Canvas> ControlBarhorizontalAlign="right"> Buttonid="t_btn_Shooting"label="拍照"click="SnapshotPicture()"/> ControlBar> Panel> Panelid="t_panel_Picture"x="360"y="10"width="180"height="200"layout="absolute"title="拍照图片"fontSize="12"visible="false"> Imageid="t_img_Picture"x="0"y="0"width="160"height="120"/> ControlBarhorizontalAlign="right"> Buttonid="t_ban_Save"label="保存"click="SavePicture()"/> ControlBar> Panel> Canvas> Application> WebService部分: [WebMethod] publicstringSavePicture(intpic_width,intpic_height,stringbitmap_data) { try { Bitmapm_pic=newBitmap(pic_width,pic_height); string[]m_tempPics=bitmap_data.Split(','); for(inti=0;i { for(intj=0;j { uintpic_argb=(uint)long.Parse(m_tempPics[i*pic_height+j]); intpic_a=(int)(pic_argb>>24&0xFF); intpic_r=(int)(pic_argb>>16&0xFF); intpic_g=(int)(pic_argb>>8&0xFF); intpic_b=(int)(pic_argb&0xFF); m_pic.SetPixel(i,j,Color.FromArgb(pic_a,pic_r,pic_g,pic_b)); } } stringfilePath=AppDomain.CurrentDomain.SetupInformation.ApplicationBase+"Photo\\"; //判断路径是否存在,若不存在则创建路径 DirectoryInfoupDir=newDirectoryInfo(filePath); if(! upDir.Exists) { upDir.Create(); } //生成随机文件名 RandomobjRand=newRandom(); DateTimedate=DateTime.Now; //生成随机文件名 stringsaveName=date.Year.ToString()+date.Month.ToString()+date.Day.ToString()+date.Hour.ToString()+date.Minute.ToString()+date.Second.ToString()+Convert.ToString(objRand.Next(99)*97+100); stringfileName=saveName+".jpg"; m_pic.Save(filePath+fileName,ImageFormat.Jpeg); return"保存成功"; } catch(Exceptionex) { returnex.Message; } } flex摄像头拍照java上传到数据库 publicvoidprocessRequest(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,IOException{ response.setContentType("text/html;charset=UTF-8"); response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires",0); Stringbitmap_data=request.getParameter("bitmap_data"); intwidth=commons.getRequestInt(request.getParameter("width"),0); intheight=commons.getRequestInt(request.getParameter("height"),0); BufferedImageimg=newBufferedImage(width,height, BufferedImage.TYPE_INT_RGB); try{ intw=width; inth=height; int[]pixels=newint[w*h]; String[]m_tempPics=bitmap_data.split(","); for(intx=0;x for(inty=0;y Longpic_argb=Long.parseLong(m_tempPics[x*h+y]); inta=(int)(pic_argb>>24&0xFF); intr=(int)(pic_argb>>16&0xFF);//右移16位,取后8位; intg=(int)(pic_argb>>8&0xFF); intb=(int)(pic_argb&0xFF); pixels[y*w+x]=newColor(r,g,b,a).getRGB(); } } img.setRGB(0,0,w,h,pixels,0,w); img.flush(); ByteArrayOutputStreambao=newByteArrayOutputStream(); ImageIO.write(img,"jpg",bao); byte[]data=bao.toByteArray(); Personimageuser=newPersonimage(); user.setFileContent(data); PersonimageDAOhm=newPersonimageDAO(); hm.save(user); PersonrelationDAOprm=newPersonrelationDAO(); Personrelationpr=prm.findById(newLong(personRelationId)); pr.setPersonimageid(user.getId()); pr.setImageflag("1"); prm.update(pr); str.append("保存成功"); }catch(Exceptione){ e.printStackTrace(); str.append("保存失败"); } response.setContentType("text/xml"); response.getWriter().write(str.toString()); } flex视频录制 importmx.events.SliderEvent; importmx.events.VideoEvent; importmx.collections.ArrayCollect
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Flex 视频 图象 处理