<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小方的Java博客

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      27 隨筆 :: 17 文章 :: 115 評論 :: 0 Trackbacks
    首先到SUN下載最新的JMF,然后安裝。http://java.sun.com/products/java-media/jmf/index.jsp

      然后,說一下需求

      1. 用攝像頭拍照

      2. 在文本框輸入文件名

      3. 按下拍照按鈕,獲取攝像頭內的圖像

      4. 在拍下的照片上有一紅框截取固定大小的照片。

      5. 保存為本地圖像為jpg格式,不得壓縮畫質

      技術關鍵,相信也是大家最感興趣的部分也就是如何讓一個攝像頭工作,并拍下一張照片了。

      利用JMF,代碼很簡單:

    //利用這三個類分別獲取攝像頭驅動,和獲取攝像頭內的圖像流,獲取到的圖像流是一個Swing的Component組件類

    public static Player player = null;
    private CaptureDeviceInfo di = null;
    private MediaLocator ml = null;

    //文檔中提供的驅動寫法,為何這么寫我也不知:)

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

    }

    catch (Exception e)
    {
     e.printStackTrace();
    }
     

      接下來就是點擊拍照,獲取攝像頭內的當前圖像。

      代碼也是很簡單:

    private JButton capture;
    private Buffer buf = null;
    private BufferToImage btoi = null;
    private ImagePanel imgpanel = null;
    private Image img = null;
    private ImagePanel imgpanel = null;

    JComponent c 
    = (JComponent) e.getSource();
    if (c == capture)//如果按下的是拍照按鈕 

     FrameGrabbingControl fgc 
    =(FrameGrabbingControl)  player.getControl("javax.media.control.FrameGrabbingControl");
     buf 
    = fgc.grabFrame(); // 獲取當前禎并存入Buffer類
     btoi = new BufferToImage((VideoFormat) buf.getFormat());
     img 
    = btoi.createImage(buf); // show the image 
     imgpanel.setImage(img);
    }
     

      保存圖像的就不多說了,以下為示例代碼

    BufferedImage bi 
    = (BufferedImage) createImage(imgWidth, imgHeight);
    Graphics2D g2 
    = bi.createGraphics();
    g2.drawImage(img, 
    nullnull);
    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");
    }
     
    posted on 2006-02-01 12:24 方佳瑋 閱讀(2131) 評論(1)  編輯  收藏 所屬分類: J2se 高級

    評論

    # re: Java中利用JMF編寫攝像頭拍照程序 2007-09-06 16:49 F
    F  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成人免费电影| 中文字幕免费在线看电影大全| 1000部禁片黄的免费看| 亚洲国产综合91精品麻豆| 亚洲免费视频网站| 亚洲精品韩国美女在线| 亚洲一区在线免费观看| 亚洲人6666成人观看| 99久久99这里只有免费费精品| 亚洲中文字幕久在线| 99久久免费国产精品特黄| 亚洲sss综合天堂久久久| 久久久www成人免费毛片| 亚洲精品欧美综合四区| 免费在线黄色网址| 中出五十路免费视频| 亚洲激情在线观看| 永久免费AV无码国产网站| 亚洲AV无码一区二区一二区| 四虎影在线永久免费四虎地址8848aa| 猫咪www免费人成网站| 亚洲国产精品无码成人片久久 | 亚洲精品综合久久中文字幕| 1024免费福利永久观看网站| 亚洲精品国产摄像头| 国内精品99亚洲免费高清| 免费人成网站在线观看不卡| 亚洲另类春色国产精品| 国产又大又长又粗又硬的免费视频| 一级做a毛片免费视频| 亚洲第一福利网站| 久久不见久久见免费影院| 一级毛片**免费看试看20分钟| 亚洲av网址在线观看| 日韩高清在线免费看| 精品国产免费人成网站| 亚洲伦理一二三四| 亚洲日韩小电影在线观看| 国产精品入口麻豆免费观看| 日韩久久无码免费毛片软件| 亚洲网站在线免费观看|