java实现摄像头截图功能

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

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

(0)

相关推荐

  • java利用phantomjs进行截图实例教程

    前言 最近工作中遇到一个需求,需要实现截图功能,断断续续查找资料.验证不同的实现方法终于算基本搞定了页面截图,因为中间过程曲折花费较多时间,分享出来帮助大家快速实现截图 为什么选用phantomjs进行截图 截图可以实现的方式有很多,比如: selenium HtmlUnit Html2Image...and so on但是这些实现的截图效果都不好.selenium只能实现截屏,不能截取整个页面,而HtmlUnit.Html2Image对js的支持效果并不好,截下来的图会有很多空白.phanto

  • java编程实现屏幕截图(截屏)代码总结

    本文实例总结了常见的java编程实现屏幕截图方法.分享给大家供大家参考,具体如下: 方法一: import java.awt.Desktop; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import javax.image

  • 使用Java实现系统托盘功能的介绍(附源码以及截图)

    Java中如何,实现系统托盘功能. 示例图 项目包结构图   系统运行截图 应用核心逻辑说明,隐藏到托盘实质就是讲窗体隐藏.即setVisible(false),显示窗体即就是讲setVisible(true). 项目代码如下: 复制代码 代码如下: package org.pdp.frame; import java.awt.AWTException; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.Sy

  • java代码实现截图功能(屏幕截图)

    复制代码 代码如下: import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.File; import javax.imageio.ImageIO; /*****************************************************

  • java实现pdf文件截图的方法【附PDFRenderer.jar下载】

    本文实例讲述了java实现pdf文件截图的方法.分享给大家供大家参考,具体如下: 最近做的一个网站中,有个需求是上传pdf文件,显示pdf的封页,点击封页之后进行在线阅读,这里使用的是PDFRender对pdf进行截图. public static boolean createScreenShoot(String source, String target) { File file = new File(source); if (!file.exists()) { System.err.prin

  • Java模拟QQ桌面截图功能实现方法

    本文实例讲述了Java模拟QQ桌面截图功能实现方法.分享给大家供大家参考.具体如下: QQ的桌面截图功能非常方便,去年曾用Java模拟过一个,现整理出来. 本方法首先需要抓到屏幕的整个图象,将图象显示在一个JFrame中,再将JFrame全屏显示,这样就模拟出了一个桌面,Java也就可以获得鼠标的作用区域从而实现桌面中的小范围截屏. import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import

  • spring(java,js,html) 截图上传图片实例详解

    html <#-- 上传头像 测试页 使用imgareaselect 插件 --> 最后 上传了这个插件 共学习参考 <link rel="stylesheet" type="text/css" href="${frontRes}/imgareaselect/css/imgareaselect-animated.css" /> <link rel="stylesheet" type="t

  • java实现区域内屏幕截图示例

    这是一个java版的截图程序 复制代码 代码如下: package com.hongyuan.test; import java.awt.AWTException;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.FlowLayout;import java.awt.Graphics;import java.

  • Java实现对视频进行截图的方法【附ffmpeg下载】

    本文实例讲述了Java实现对视频进行截图的方法.分享给大家供大家参考,具体如下: 之前介绍过Java使用ffmpeg进行视频转换,这里演示一下ffmpeg进行视频截图的方法. 具体代码如下: import java.io.File; import java.util.List; //生成视频文件的首帧为图片 //windows下的版本 public class CreatePh { // public static final String FFMPEG_PATH = "E:/ffmpeg/ff

  • Java实现屏幕截图及剪裁

    Java标准API中有个Robot类,该类可以实现屏幕截图,模拟鼠标键盘操作这些功能.这里只展示其屏幕截图. 截图的关键方法createScreenCapture(Rectangle rect) ,该方法需要一个Rectangle对象,Rectangle就是定义屏幕的一块矩形区域,构造Rectangle也相当容易: new Rectangle(int x, int y, int width, int height),四个参数分别是矩形左上角x坐标,矩形左上角y坐标,矩形宽度,矩形高度.截图方法返

随机推荐