java实现摄像头截图功能

时间:2021-05-19

本文为大家分享了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摄像头截图

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章