jmf摄像头applet

转载 2007年09月11日 21:19:00

  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");  
                  }  
          }  
  }  

相关文章推荐

个利用JMF控制摄像头拍照的程序

为了客户最近写了一个利用JMF控制摄像头拍照的程序 为了客户最近写了一个利用JMF控制摄像头拍照的程序,主要是为了将纸质资料转向电子化,挺有意思的。利用了JMF、http隧道通讯,十六进制字符转...

(转)JMF找不到摄像头的解决方法

1、http://www.blogjava.net/amplifier/archive/2014/07/01/415330.html 2、http://stackoverflow.com/quest...

JMF调用USB摄像头程序

import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt....
  • oyzl68
  • oyzl68
  • 2011-11-11 17:02
  • 4267

jmf实现调用笔记本摄像头并拍照

最近在学习jmf的相关功能,尝试了用它实现视频通信,因此,先做了调用摄像头的工作,在网上找个很久的资料,终于发现了一个能用的代码,特与大家分享    前期工作:jmf安装               ...

用JMF调用摄像头驱动并显示到窗体

用JMF调用摄像头驱动并拍照 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloa...

首先安装jmf,安装过程中会提示注册摄像头.

首先安装jmf,安装过程中会提示注册摄像头. 开始代码 用applet比较快 001 package com.cayden.video; ...
  • oyzl68
  • oyzl68
  • 2011-11-11 17:04
  • 2152

Java中利用JMF编写摄像头拍照程序

首先到SUN下载最新的JMF,然后安装。http://java.sun.com/products/java-media/jmf/index.jspJMF安装配置如果要是用eclipse的话,如下操作:...
  • yjpa7
  • yjpa7
  • 2011-05-07 12:08
  • 276

JMF实现从摄像头和麦克截取视频和音频流进行播放

利用JMF捕获媒体数据的过程: 1.定位所需要用的捕获设备,可以通过查询CaptureDeviceManager来定位。 2.获取这个捕获设备的信息CaptureDeviceInfo对象。 3....

Java基于JMF、FMJ实现打开摄像头实时录制

纪念平时一天的研究成果,本人学了那么多技术从未写过文章,今儿想贡献一下,望大家笑纳,多多指教 1、基于FMJ实现      FMJ是一个Java开源项目它是JMF(Java Media Framewo...

Java调用摄像头进行拍照源码,并且有JMF下载地址

使用Java调用摄像头进行拍照源码,并且有JMF下载地址。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)