首页 > 开发 > Java > 正文

java实现摄像头截图功能

2024-07-14 08:42:34
字体:
来源:转载
供稿:网友

本文为大家分享了java摄像头截图的具体代码,供大家参考,具体内容如下

本来sun有个jmf组件可以很方便的实现摄像头截图的,不过这版本后来停止更新了,当前官网最新版本为Java Media Framework (JMF) 2.1.1e,下载回来,在windows 7 32位上使用,居然不能运行,网上另外找了个jmf的替代框架fmj使用,截图实现代码:

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("摄像头截图应用");    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);  //弹出摄像头设备选择    //    MediaLocator locator = null;//    GlobalCaptureDevicePlugger.addCaptureDevices();//    Vector vectorDevices = CaptureDeviceManager.getDeviceList(null);//    if (vectorDevices == null || vectorDevices.size() == 0)//    {//      System.out.println("没有摄像头===");//      return;//    }//    //选择第一个摄像头设备//    for ( int i = 0; i < vectorDevices.size(); i++ ) //    {//      CaptureDeviceInfo infoCaptureDevice = (CaptureDeviceInfo) vectorDevices.get(i);//      System.out.println("设备名===============" + infoCaptureDevice.getName());//      //选择第一个设备为程序使用,如果存在多个设备时,则第一个可能不是摄像头//      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摄像头截图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表