本来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);
}
}
分享到:
相关推荐
Xuggle视频分析Demo,java操作摄像头项目,含有xuggle-xuggler-5.4.jar
编译后,执行文件变可以直接运行,该资源合适刚接触jmf的人使用!在编译前得先下好jmf
线上抓娃娃最近三个月火爆了。自己也参与其中的开发,在网上各种找资料,整理了这份demo,解压密码123#。
Java虚拟摄像头VCamSDK是适用于Windows的虚拟相机SDK,允许您在无需安装软件的情况下向应用程序添加“虚拟摄像头”功能。 VCamSDK: ://www.e2esoft.com/sdk/vcam-sdk/ VCamSDK包含将虚拟摄像机功能添加到应用程序所...
摄像头拍照程序,java实现,可以进行拍照和图片操作。
NULL 博文链接:https://stjauns.iteye.com/blog/1876672
一个java开发的摄像头程序,可以用于某些项目在操作过程中摄入操作者头像的功能中
NULL 博文链接:https://peihexian.iteye.com/blog/1045576
java调用海康威视的摄像头,进行rtsp流转rtmp流,里面提供了demo,可以在项目中正式使用,也可以调整里面相关的参数。
javacv开发包是用于支持java多媒体开发的一套开发包,可以适用于本地多媒体(音视频)调用以及音视频,图片等文件后期操作(图片修改,音视频解码剪辑等等功能),这里只使用最简单的本地摄像头调用来演示一下javacv...
javacv0.7+opencv2.4.8调用本地摄像头详细操作及测试代码,因为opencv2.4.8文件较大,本人无法上传还请见谅,给个百度云的下载地址http://pan.baidu.com/s/1o6imnUU,请各位自行下载
本人自己写的Java远程监控,超简单,代码清晰易懂,使用UDP不可靠连接,cpu占用少,不过只有远程桌面监控,目前尚不能远程操作。。。纯Java代码无扩展jar包。 另免费附送基于JMF的远程摄像头监控,xp可用win7有些...
android操作摄像头说明,刚看到自己保留了这份资源,希望对大家有帮助。
jsp调用摄像头拍照,控制摄像头操作 其中包括asp、php调用控件的实现例子,
使用SDK抓取海康威视NVR的图片(文件及内存方式),从底层抓取视频流转化为BufferImage实时显示,支持二次开发。注意修改sdk路径。有问题联系QQ:52185025
C# WPF使用AForge类库操作USB摄像头拍照并保存.zip
大华摄像头的javaDemo,里面包含了对大华摄像头的一些操作
一篇讲解手势识别的硕士论文,讲解了自制G-Sense系统的设计。