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

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

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

    Keep Moving

    一個(gè)人倘若需要從思想中得到快樂(lè),那么他的第一個(gè)欲望就是學(xué)習(xí)。
    隨筆 - 16, 文章 - 10, 評(píng)論 - 1, 引用 - 0
    數(shù)據(jù)加載中……

    java利用jmf實(shí)現(xiàn)拍照功能

    首先到SUN下載最新的JMF,然后安裝。http://java.sun.com/products/java-media/jmf/index.jsp 

    然后,說(shuō)一下需求

    1. 用攝像頭拍照

    2. 在文本框輸入文件名

    3. 按下拍照按鈕,獲取攝像頭內(nèi)的圖像

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

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

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

    利用JMF,代碼很簡(jiǎn)單:

    //利用這三個(gè)類分別獲取攝像頭驅(qū)動(dòng),和獲取攝像頭內(nèi)的圖像流,獲取到的圖像流是一個(gè)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();
    }

    接下來(lái)就是點(diǎn)擊拍照,獲取攝像頭內(nèi)的當(dāng)前圖像。

    代碼也是很簡(jiǎn)單:

     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)//如果按下的是拍照按鈕 http://www.5a520.cn
    {
    FrameGrabbingControl fgc =(FrameGrabbingControl)player.getControl
    ("javax.media.control.FrameGrabbingControl");
    buf = fgc.grabFrame(); // 獲取當(dāng)前禎并存入Buffer類 http://www.bt285.cn
    btoi = new BufferToImage((VideoFormat) buf.getFormat());
    img = btoi.createImage(buf); // show the image
    imgpanel.setImage(img);
    }

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

     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);//不壓縮圖像 http://www.bt285.cn
    encoder.setJPEGEncodeParam(param);
    try
    {
    encoder.encode(bi);
    out.close();
    }
    catch (java.io.IOException io)
    {
    System.out.println("IOException");
    }

    已經(jīng)申請(qǐng)將JWebCam建立為一個(gè)開源項(xiàng)目,放到GRO,大家發(fā)揮自己的想象力加入自己的代碼吧,比如拍攝視頻,添加圖像處理功能,等等

    posted on 2009-05-22 15:45 BruceLeey 閱讀(174) 評(píng)論(0)  編輯  收藏 所屬分類: 雜亂


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久久久亚洲av无码专区导航| 亚洲综合色丁香婷婷六月图片| 免费在线中文日本| 亚洲精品线在线观看| 免费可以在线看A∨网站| 免费看内射乌克兰女| 亚洲AV无码国产丝袜在线观看| 曰批视频免费30分钟成人| 色吊丝免费观看网站| 亚洲αv在线精品糸列| 青草草色A免费观看在线| 黄页网址大全免费观看12网站| 亚洲AV无码一区二区二三区入口 | 日韩中文字幕精品免费一区| 亚洲精品中文字幕| 亚洲男人的天堂www| 在线免费一区二区| 日韩免费视频一区二区| 亚洲成av人片在线天堂无| 亚洲AV无码久久精品狠狠爱浪潮| 免费一本色道久久一区| 免费萌白酱国产一区二区三区| 亚洲精品伊人久久久久 | 亚洲综合激情五月色一区| 亚洲综合伊人久久大杳蕉| 免费无码A片一区二三区| 免费视频成人手机在线观看网址| 亚洲AV综合永久无码精品天堂| 亚洲尹人香蕉网在线视颅| 亚洲国产精品不卡毛片a在线| 人成午夜免费视频在线观看| aaa毛片免费观看| 亚洲欧美国产精品专区久久| 亚洲av色福利天堂| 国产午夜亚洲不卡| 国产成人高清精品免费软件| 免费精品国产日韩热久久| 日韩免费视频一区二区| 国产人成网在线播放VA免费| 久久精品国产亚洲AV电影网| 亚洲免费视频网址|