国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > Java > 正文

java實(shí)現(xiàn)攝像頭截圖功能

2024-07-14 08:42:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文為大家分享了java攝像頭截圖的具體代碼,供大家參考,具體內(nèi)容如下

本來(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(480, 500);    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);  }}

源碼下載:java攝像頭截圖

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嵊泗县| 米林县| 新乡县| 增城市| 宽甸| 凌源市| 杭锦旗| 噶尔县| 静乐县| 隆林| 曲松县| 广水市| 和田市| 赣榆县| 博兴县| 内乡县| 定陶县| 石楼县| 汕尾市| 永顺县| 北辰区| 呼图壁县| 洞头县| 始兴县| 石屏县| 来安县| 六枝特区| 泸西县| 田东县| 博野县| 缙云县| 浮梁县| 延长县| 彰化县| 鹤岗市| 葫芦岛市| 道真| 长治县| 巴里| 都江堰市| 潜山县|