注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

享受编码

    的乐趣

 
 
 

日志

 
 

flex摄像头拍照 java上传到数据库  

2011-07-25 11:33:15|  分类: Flex & as3 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

java 代码:

  1. public void processRequest(HttpServletRequest request,
  2. HttpServletResponse response) throws ServletException, IOException {
  • response.setContentType("text/html;charset=UTF-8");
  • response.setHeader("Pragma", "No-cache");
  • response.setHeader("Cache-Control", "no-cache");
  • response.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_RGB);
  • try {
  • int w = width;
  • int h = height;
  • int[] pixels = new int[w * h];
  • String[] m_tempPics = bitmap_data.split(",");
  • for (int x = 0; x < w; x++) {
  • for (int y = 0; y < h; y++) {
  • Long pic_argb = Long.parseLong(m_tempPics[x * h + y]);
  • int a = (int) (pic_argb >> 24 & 0xFF);
  • int r = (int) (pic_argb >> 16 & 0xFF); //右移16位 ,取后8位;
  • int g = (int) (pic_argb >> 8 & 0xFF);
  • int b = (int) (pic_argb & 0xFF);
  • pixels[y * w + x] = 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 PersonimageDAO();
  • 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());
  • }
  • 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"); response.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_RGB); try { int w = width; int h = height; int[] pixels = new int[w * h]; String[] m_tempPics = bitmap_data.split(","); for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { Long pic_argb = Long.parseLong(m_tempPics[x * h + y]); int a = (int) (pic_argb >> 24 & 0xFF); int r = (int) (pic_argb >> 16 & 0xFF); //右移16位 ,取后8位; int g = (int) (pic_argb >> 8 & 0xFF); int b = (int) (pic_argb & 0xFF); pixels[y * w + x] = 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 PersonimageDAO(); 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完整代码:


    程序代码
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="388" height="222" creationComplete="initApp()">
    <mx:Style>
    Alert{font-size:12px;}
    </mx:Style>
    <mx:Script>
    <![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 = 160; //
    摄像头显示宽度
    private static const DEFAULT_CAMERA_HEIGHT:Number = 120; //
    摄像头显示高度
    private static const DEFAULT_WEBSERVICE_URL:String = "http://localhost:1888/Web/TestWebService.asmx?WSDL"; //WebService
    地址

    private var m_camera:Camera; //
    定义一个摄像头
    private var m_localVideo:Video; //
    定义一个本地视频
    private var m_pictureBitmapData:BitmapData //
    定义视频截图
    [Bindable]
    private var m_pictureData:String;

    private function initApp():void
    {
    t_btn_Shooting.enabled = false;
    t_ban_Save.enabled = false;
    initCamera();
    }

    //
    初始化摄像头
    private function 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 = 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
    {
    m_pictureBitmapData = new BitmapData(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT);
    m_pictureBitmapData.draw(t_vd_Video,new Matrix());

    var m_pictureBitmap:Bitmap = 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 < DEFAULT_CAMERA_WIDTH; i++)
    {
    for(var j:int = 0; j < DEFAULT_CAMERA_HEIGHT; 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();
    }

    //
    检测摄像头权限事件
    private function __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);
    }

    //
    当摄像头不存在,或连接不正常时重新获取
    private function __InitCamera(event:CloseEvent):void
    {
    if(event.detail == Alert.OK)
    {
    initApp();
    }
    }

    //WebService
    保存图片成功事件
    private function __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失败事件
    private function __onSavePictureFault(event:FaultEvent):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("
    转向页面");
    }
    }
    ]]>
    </mx:Script>
    <mx:WebService id="t_ws_SavePicture" showBusyCursor="true" wsdl="{DEFAULT_WEBSERVICE_URL}" useProxy="false" result="__onSavePictureResult(event)" fault="__onSavePictureFault(event)">
    <mx:operation name="SavePicture">
    <mx:request>
    <pic_width>{DEFAULT_CAMERA_WIDTH}</pic_width>
    <pic_height>{DEFAULT_CAMERA_HEIGHT}</pic_height>
    <bitmap_data>{m_pictureData}</bitmap_data>
    </mx:request>
    </mx:operation>
    </mx:WebService>
    <mx:Panel x="10" y="10" width="180" height="200" layout="absolute" title="
    视频拍照" fontSize="12">
    <mx:VideoDisplay id="t_vd_Video" width="160" height="120"/>
    <mx:ControlBar horizontalAlign="right">
    <mx:Button id="t_btn_Shooting" label="
    拍照" click="SnapshotPicture()"/>
    </mx:ControlBar>
    </mx:Panel>
    <mx:Panel id="t_panel_Picture" x="198" y="10" width="180" height="200" layout="absolute" title="
    拍照图片" fontSize="12" visible="false">
    <mx:Image id="t_img_Picture" x="0" y="0" width="160" height="120"/>
    <mx:ControlBar horizontalAlign="right">
    <mx:Button id="t_ban_Save" label="
    保存" click="SavePicture()" />
    </mx:ControlBar>
    </mx:Panel>
    </mx:Application>

      评论这张
     
    阅读(1606)| 评论(0)
    推荐 转载

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017