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

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

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

    一切皆可抽象

    大而無形 庖丁解牛 厚積薄發 滌慮玄覽
       ::  ::  ::  ::  :: 管理

    【轉貼】利用JMF進行攝像頭拍照

    Posted on 2005-10-13 09:11 鋒出磨礪 閱讀(416) 評論(0)  編輯  收藏 所屬分類: java算法
    首先到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, null, null);







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



    }




    主站蜘蛛池模板: 免费h成人黄漫画嘿咻破解版| 91大神免费观看| 亚洲国产精品人人做人人爱| 亚洲AV无码资源在线观看| 免费国产黄线在线观看| 亚洲卡一卡二卡乱码新区| 无码人妻精品一二三区免费| 亚洲中文字幕精品久久| 拨牐拨牐x8免费| 国产精品亚洲天堂| 亚洲精品国产自在久久| 三级毛片在线免费观看| 亚洲高清日韩精品第一区| av无码免费一区二区三区| 亚洲AV成人精品日韩一区| 亚洲美女高清一区二区三区| 免费成人在线电影| 亚洲日韩区在线电影| 美女视频黄免费亚洲| 日韩亚洲人成网站| 亚洲精品乱码久久久久久| 91av免费观看| 亚洲AV成人片无码网站| 亚洲人成人无码网www电影首页| 久久国产乱子伦精品免费不卡 | 国产亚洲日韩在线三区| 国产免费AV片在线观看| 久久亚洲精品专区蓝色区| 成人国产mv免费视频| 国内永久免费crm系统z在线| 亚洲日本在线免费观看| 免费不卡中文字幕在线| 无码人妻精品中文字幕免费| 亚洲欧洲国产综合AV无码久久 | 久久久久久久尹人综合网亚洲| 日本免费xxxx| 日本高清免费中文在线看| 亚洲宅男永久在线| 国产成人高清精品免费鸭子| 秋霞人成在线观看免费视频| 四虎亚洲精品高清在线观看|