关闭

jmf摄像头applet

1361人阅读 评论(0) 收藏 举报

  import   javax.swing.*;  
  import   java.io.*;  
  import   javax.media.*;  
  import   javax.media.format.*;  
  import   javax.media.util.*;  
  import   javax.media.control.*;  
   
  import   java.applet.Applet;  
  import   java.awt.*;  
  import   java.awt.image.*;  
  import   java.awt.event.*;  
   
  import   com.sun.image.codec.jpeg.*;  
   
   
  public   class   WebCang   extends   JApplet   implements   ActionListener  
  {  
          public   static   Player   player   =   null;  
          private   CaptureDeviceInfo   di   =   null;  
          private   MediaLocator   ml   =   null;  
          /**  
            *   瞻钮  
            */  
          private   JButton   capture   =   null;  
          /**  
            *   姘磁?  
            */  
          private   JButton   save   =   null;  
          private   JTextField   num   =   null;  
          private   Buffer   buf   =   null;  
          private   Image   img   =   null;  
          //private   VideoFormat   vf   =   null;  
          private   BufferToImage   btoi   =   null;  
          private   ImagePanel   imgpanel   =   null;  
   
          /**  
            *   选取x,y,width,height默值  
            */  
          private   int   rectX;  
          private   int   rectY;  
          private   int   rectWidth   =   150;  
          private   int   rectHeight   =   200;  
          private   int   imgWidth   =   320;  
          private   int   imgHeight   =   240;  
          /**  
            *   默媳募  
            */  
          private   String   fname   =   "test";  
   
          public   WebCang()  
          {  
                  setLayout(new   BorderLayout());  
                  setSize(320,   550);  
   
                  imgpanel   =   new   ImagePanel();  
                  imgpanel.addMouseMotionListener(imgpanel);  
                  capture   =   new   JButton("");  
                  capture.addActionListener(this);  
                  save   =   new   JButton("");  
                  save.addActionListener(this);  
                  num   =   new   JTextField();  
   
                  String   str1   =   "vfw:Logitech   USB   Video   Camera:0";  
                  String   str2   =   "vfw:Microsoft   WDM   Image   Capture   (Win32):0";  
                  di   =   CaptureDeviceManager.getDevice(str2);  
                  ml   =   di.getLocator();  
                  try  
                  {  
                          player   =   Manager.createRealizedPlayer(ml);  
                          player.start();  
                          Component   comp;  
                          if   ((comp   =   player.getVisualComponent())   !=   null)  
                          {  
                                  add(comp,   BorderLayout.NORTH);  
                          }  
                          Panel   panel1   =   new   Panel(new   BorderLayout());  
                          panel1.add(capture,   BorderLayout.NORTH);  
                          panel1.add(new   Label("应募:"),   BorderLayout.WEST);  
                          panel1.add(num,   BorderLayout.CENTER);  
                          panel1.add(save,   BorderLayout.SOUTH);  
                          add(panel1,   BorderLayout.CENTER);  
                          add(imgpanel,   BorderLayout.SOUTH);  
                  }  
                  catch   (Exception   e)  
                  {  
                          e.printStackTrace();  
                  }  
          }  
   
          public   static   void   main(String[]   args)  
          {  
                  JFrame   f   =   new   JFrame("--窕埃");  
              //     Frame   f   =   new   Frame("殖粘   BCU   WebCam   Application");  
                  WebCang   cf   =   new   WebCang();  
                  f.addWindowListener(new   WindowAdapter()  
                  {  
                          public   void   windowClosing(WindowEvent   e)  
                          {  
                                  playerclose();  
                                  System.exit(0);  
                          }  
                  });  
                  f.add("Center",   cf);  
                  f.pack();  
                  f.setSize(new   Dimension(320,   590));  
                  f.setVisible(true);  
          }  
          /**  
            *   乇头  
            *  
            */  
          public   static   void   playerclose()  
          {  
                  player.close();  
                  player.deallocate();  
          }  
          /**  
            *    
            */  
          public   void   actionPerformed(ActionEvent   e)  
          {  
                  JComponent   c   =   (JComponent)   e.getSource();  
                  if   (c   ==   capture)  
                  {   //   Grab   a   frame              
                          FrameGrabbingControl   fgc   =  
                                  (FrameGrabbingControl)   player.getControl(  
                                          "javax.media.control.FrameGrabbingControl");  
                          buf   =   fgc.grabFrame();   //   Convert   it   to   an   image              
                          btoi   =   new   BufferToImage((VideoFormat)   buf.getFormat());  
                          img   =   btoi.createImage(buf);   //   show   the   image            
                          imgpanel.setImage(img);   //   save   image  
                  }  
                  else   if   (c   ==   save)  
                  {  
                          if   (img   !=   null)  
                          {  
                                  fname   =   !num.getText().equals("")   ?   num.getText()   :   "test";  
                                  saveJPG(img,   "Photo/"   +   fname   +   ".jpg");  
                          }  
                  }  
          }  
          /**  
            *   珊示片隙围选要取牟  
            */  
          class   ImagePanel   extends   Panel   implements   MouseMotionListener  
          {  
                  private   Image   myimg   =   null;  
   
                  public   ImagePanel()  
                  {  
                          setLayout(null);  
                          setSize(imgWidth,   imgHeight);  
                  }  
                  public   void   setImage(Image   img)  
                  {  
                          this.myimg   =   img;  
                          repaint();  
                  }  
                  public   void   update(Graphics   g)  
                  {  
                          g.clearRect(0,   0,   getWidth(),   getHeight());  
                          if   (myimg   !=   null)  
                          {  
                                  g.drawImage(myimg,   0,   0,   this);  
                                  g.setColor(Color.RED);  
                                  g.drawRect(rectX,   rectY,   rectWidth,   rectHeight);  
                          }  
                  }  
                  public   void   paint(Graphics   g)  
                  {  
                          update(g);  
                  }  
   
                  public   void   mouseDragged(MouseEvent   e)  
                  {  
                          rectX   =   e.getX()   -   50;  
                          rectY   =   e.getY()   -   50;  
                          repaint();  
                  }  
   
                  public   void   mouseMoved(MouseEvent   e)  
                  {  
                  }  
          }  
          /**  
            *   图  
            *   @param   img  
            *   @param   s  
            */  
          public   void   saveJPG(Image   img,   String   s)  
          {  
                  BufferedImage   bi   =   (BufferedImage)   createImage(imgWidth,   imgHeight);  
                  /*BufferedImage   bi   =  
                          new   BufferedImage(  
                                  img.getWidth(null),  
                                  img.getHeight(null),  
                                  BufferedImage.TYPE_INT_RGB);*/  
   
                  Graphics2D   g2   =   bi.createGraphics();  
                  g2.clipRect(rectX,   rectY,   rectWidth,   rectHeight);  
                  g2.drawImage(img,   null,   null);  
                  int   moveX   =   rectX   >   0   ?   rectX   :   0;  
                  int   moveY   =   rectY   >   0   ?   rectY   :   0;  
                  int   cutWidth   =  
                          rectX   +   rectWidth   >   imgWidth  
                                  ?   rectWidth   -   ((rectX   +   rectWidth)   -   imgWidth)  
                                  :   rectWidth;  
                  int   cutHeight   =  
                          rectY   +   rectHeight   >   imgHeight  
                                  ?   rectHeight   -   ((rectY   +   rectHeight)   -   imgHeight)  
                                  :   rectHeight;  
                  bi   =   bi.getSubimage(moveX,   moveY,   cutWidth,   cutHeight);  
   
                  FileOutputStream   out   =   null;  
                  try  
                  {  
                          out   =   new   FileOutputStream(s);  
                  }  
                  catch   (java.io.FileNotFoundException   io)  
                  {  
                          System.out.println("File   Not   Found");  
                  }  
                  JPEGImageEncoder   encoder   =   JPEGCodec.createJPEGEncoder(out);  
                  JPEGEncodeParam   param   =   encoder.getDefaultJPEGEncodeParam(bi);  
                  param.setQuality(1f,   false);  
                  encoder.setJPEGEncodeParam(param);  
                  try  
                  {  
                          encoder.encode(bi);  
                          out.close();  
                  }  
                  catch   (java.io.IOException   io)  
                  {  
                          System.out.println("IOException");  
                  }  
          }  
  }  

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:728126次
    • 积分:10301
    • 等级:
    • 排名:第1623名
    • 原创:291篇
    • 转载:129篇
    • 译文:1篇
    • 评论:81条
    文章分类
    最新评论