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

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

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

    posts - 59, comments - 244, trackbacks - 0, articles - 0
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    java攝像頭截圖

    Posted on 2012-06-09 01:04 penngo 閱讀(4899) 評(píng)論(2)  編輯  收藏 所屬分類: Java
    本來(lái)sun有個(gè)jmf組件可以很方便的實(shí)現(xiàn)攝像頭截圖的,不過(guò)這版本后來(lái)停止更新了,當(dāng)前官網(wǎng)最新版本為Java Media Framework (JMF) 2.1.1e,下載回來(lái),在windows 7 32位上使用,居然不能運(yùn)行,網(wǎng)上另外找了個(gè)jmf的替代框架fmj使用,截圖實(shí)現(xiàn)代碼:
    package com.pengo.capture;

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Graphics2D;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.media.MediaLocator;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import net.sf.fmj.ui.application.CaptureDeviceBrowser;
    import net.sf.fmj.ui.application.ContainerPlayer;
    import net.sf.fmj.ui.application.PlayerPanelPrefs;

    public class CameraFrame extends JFrame{
        
    private static int num = 0;
        
    public CameraFrame() throws Exception{
            
    this.setTitle("攝像頭截圖應(yīng)用");
            
    this.setSize(480500);
            
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
    final JPanel cameraPanel = new JPanel();
            
    this.getContentPane().setLayout(new BorderLayout());
            
    this.getContentPane().add(cameraPanel, BorderLayout.CENTER);
            ContainerPlayer containerPlayer 
    = new ContainerPlayer(cameraPanel);
            MediaLocator locator 
    = CaptureDeviceBrowser.run(null);   //彈出攝像頭設(shè)備選擇
            
    //        MediaLocator locator = null;
    //        GlobalCaptureDevicePlugger.addCaptureDevices();
    //        Vector vectorDevices = CaptureDeviceManager.getDeviceList(null);
    //        if (vectorDevices == null || vectorDevices.size() == 0)
    //        {
    //            System.out.println("沒(méi)有攝像頭===");
    //            return;
    //        }
    //        //選擇第一個(gè)攝像頭設(shè)備
    //        for ( int i = 0;  i < vectorDevices.size();  i++ ) 
    //        {
    //            CaptureDeviceInfo infoCaptureDevice = (CaptureDeviceInfo) vectorDevices.get(i);
    //            System.out.println("設(shè)備名===============" + infoCaptureDevice.getName());
    //            //選擇第一個(gè)設(shè)備為程序使用,如果存在多個(gè)設(shè)備時(shí),則第一個(gè)可能不是攝像頭
    //            locator = infoCaptureDevice.getLocator();
    //            break;
    //        }

            PlayerPanelPrefs prefs 
    = new PlayerPanelPrefs();
            containerPlayer.setMediaLocation(locator.toExternalForm(), prefs.autoPlay);
            
            JPanel btnPanel 
    = new JPanel(new BorderLayout());
            
    final JTextField path = new JTextField("E:\\camera");
            path.setColumns(
    30);
            btnPanel.add(path, BorderLayout.WEST);
            JButton okBtn 
    = new JButton("截圖");
            okBtn.addActionListener(
    new ActionListener(){
                 
    public void actionPerformed(ActionEvent e){
                     Dimension imageSize 
    = cameraPanel.getSize();
                        BufferedImage image 
    = new BufferedImage(imageSize.width,
                                imageSize.height, BufferedImage.TYPE_INT_ARGB);
                        Graphics2D g 
    = image.createGraphics();
                        cameraPanel.paint(g);
                        g.dispose();
                        
    try {
                   
                            String filePath 
    = path.getText();
                            File file 
    = new File(filePath);
                            
    if(file.exists() == false){
                                file.mkdirs();
                            }

                            ImageIO.write(image, 
    "png"new File(file.getAbsolutePath() + "/" + num + ".png"));
                            num
    ++;
                        }
     catch (IOException ex) {
                            ex.printStackTrace();
                           
                        }

                 }

            }
    );
            btnPanel.add(okBtn, BorderLayout.EAST);
            
    this.getContentPane().add(btnPanel, BorderLayout.SOUTH);
        }

        
        
    public static void main(String[] args) throws Exception{
            CameraFrame camera 
    = new CameraFrame();
            camera.setVisible(
    true);
        }

    }

    附件源碼

    評(píng)論

    # re: java攝像頭截圖  回復(fù)  更多評(píng)論   

    2012-07-05 12:42 by guanzhenxing
    學(xué)習(xí)了!

    # re: java攝像頭截圖  回復(fù)  更多評(píng)論   

    2013-04-01 15:54 by 千山鳥(niǎo)飛絕
    你好,我試用了你的示例,發(fā)現(xiàn)截圖還不行,保存的圖片是空白,沒(méi)有截圖成功。

    我的攝像頭選擇是:vfw:Mircrosoft WDM Image Capture.
    主站蜘蛛池模板: 久久精品国产96精品亚洲| 国产成人精品高清免费| 国产精品公开免费视频| 亚洲国产日韩在线视频| 亚洲AV无码无限在线观看不卡| 久久久久久久久无码精品亚洲日韩 | 亚洲欧洲自拍拍偷精品 美利坚| 久久久久亚洲AV成人片| 青草青草视频2免费观看| 久久九九兔免费精品6| 亚洲av麻豆aⅴ无码电影| 亚洲一区二区影视| 国产在线播放线91免费| 永久黄网站色视频免费观看| 亚洲AV乱码久久精品蜜桃| 无码一区二区三区亚洲人妻| 每天更新的免费av片在线观看 | 一本色道久久综合亚洲精品蜜桃冫| caoporn成人免费公开| 成人毛片视频免费网站观看| 久久精品国产精品亚洲蜜月| 自拍偷自拍亚洲精品播放| 亚洲香蕉免费有线视频| 亚洲色偷偷偷鲁综合| 久久亚洲精品无码gv| 性短视频在线观看免费不卡流畅 | 暖暖免费中文在线日本| 亚洲天堂免费在线| 国产精品成人69XXX免费视频| 日本激情猛烈在线看免费观看| 亚洲中文无码永久免费| 亚洲小视频在线观看| 国产免费MV大全视频网站| 日本19禁啪啪无遮挡免费动图| 亚洲春黄在线观看| 久久午夜免费鲁丝片| 亚洲综合熟女久久久30p| 水蜜桃视频在线观看免费| 午夜神器成在线人成在线人免费| 亚洲色图.com| 污视频在线免费观看|