`
hz_chenwenbiao
  • 浏览: 1010241 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 截屏

阅读更多
每隔一定时间截屏回放:
package RecordAndRun;

import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;

/*
 * 每隔一秒钟截一次屏,可以看到动态播放的效果,但想将BufferedImage bImage定义为数组则很快堆溢出
 */

public class Capture extends javax.swing.JFrame implements Runnable {

	/** Creates new form Capture */

	public Capture() {

		initComponents();

		try {

			robot = new Robot();

		} catch (AWTException ex) {

			ex.printStackTrace();

		}

		dim = Toolkit.getDefaultToolkit().getScreenSize();
	}

	/**
	 * This method is called from within the constructor to
	 * 
	 * 
	 * 
	 * initialize the form.
	 * 
	 * 
	 * 
	 * WARNING: Do NOT modify this code. The content of this method is
	 * 
	 * 
	 * 
	 * always regenerated by the Form Editor.
	 */

	// <editor-fold desc=" 生成的代码 " defaultstate="collapsed"></editor-fold>

	private void initComponents() {

		screenCanvas = new java.awt.Canvas();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

		stop = true;

		setResizable(false);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());

		getContentPane().setLayout(layout);

		layout.setHorizontalGroup(

		layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

		.addComponent(screenCanvas, javax.swing.GroupLayout.PREFERRED_SIZE,
				519, javax.swing.GroupLayout.PREFERRED_SIZE));

		layout.setVerticalGroup(

		layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

		.addComponent(screenCanvas, javax.swing.GroupLayout.PREFERRED_SIZE,
				434, javax.swing.GroupLayout.PREFERRED_SIZE)

		);

		setLocation(100, 100);
		
		pack();

	}// 

	/** * @param args the command line arguments */

	public static void main(String args[]) {

		final Capture capture = new Capture();

		java.awt.EventQueue.invokeLater(new Runnable() {

			public void run() {

				capture.setVisible(true);

			}

		});

		Thread cutThread = new Thread(capture);

		cutThread.start();

		
		
	}

	public void run() {

		stop = false;

		while (!stop) {

			BufferedImage bImage = robot.createScreenCapture(new Rectangle(
					dim.width, dim.height));//这里是用来设定截屏的形状和位置,都是可以自己设定的

			Graphics g = this.screenCanvas.getGraphics();

			g.drawImage(bImage, 0, 0, this);

			try {

				Thread.sleep(1000);

			} catch (InterruptedException ex) {

				ex.printStackTrace();

			}

		}

	}

	private synchronized void stop() {

		stop = true;

	}

	// 变量声明 - 不进行修改

	private java.awt.Canvas screenCanvas;

	// 变量声明结束

	private volatile boolean stop;

	private Robot robot;

	private Dimension dim;

}


截屏并保存图片:
package RecordAndRun;

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;

//抓屏并保存

/*******************************************************************
 * 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照" This JavaBean is used to snapshot the
 * GUI in a Java application! You can embeded it in to your java application
 * source code, and us it to snapshot the right GUI of the application
 * 
 * @see javax.ImageIO
 * @author liluqun ([email]liluqun@263.net[/email])
 * @version 1.0
 * 
 *****************************************************/
public class GuiCamera {
	private String fileName; // 文件的前缀
	private String defaultName = "GuiCamera";
	static int serialNum = 0;
	private String imageFormat; // 图像文件的格式
	private String defaultImageFormat = "png";
	Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

	/****************************************************************
	 * 默认的文件前缀为GuiCamera,文件格式为PNG格式 The default construct will use the default
	 * Image file surname "GuiCamera", and default image format "png"
	 ****************************************************************/
	public GuiCamera() {
		fileName = defaultName;
		imageFormat = defaultImageFormat;
	}

	/****************************************************************
	 * @param s
	 *            the surname of the snapshot file
	 * @param format
	 *            the format of the image file, it can be "jpg" or "png"
	 *            本构造支持JPG和PNG文件的存储
	 ****************************************************************/
	public GuiCamera(String s, String format) {
		fileName = s;
		imageFormat = format;
	}

	/****************************************************************
	 * 对屏幕进行拍照 snapShot the Gui once
	 ****************************************************************/
	public void snapShot() {
		try {
			// 拷贝屏幕到一个BufferedImage对象screenshot
			BufferedImage screenshot = (new Robot())
					.createScreenCapture(new Rectangle(0, 0,
							(int) d.getWidth(), (int) d.getHeight()));
			serialNum++;
			// 根据文件前缀变量和文件格式变量,自动生成文件名
			String name = fileName + String.valueOf(serialNum) + "."
					+ imageFormat;
			File f = new File(name);
			System.out.print("Save File " + name);
			// 将screenshot对象写入图像文件
			ImageIO.write(screenshot, imageFormat, f);
			System.out.print("..Finished!\n");
		} catch (Exception ex) {
			System.out.println(ex);
		}
	}

	public static void main(String[] args) {
		GuiCamera cam = new GuiCamera("d:\\Hello", "png");// 
		cam.snapShot();
	}
}
分享到:
评论

相关推荐

    功能比较完善的JAVA截图程序

    Java截图程序是一种基于Java编程语言实现的图形用户界面(GUI)工具,用于捕获和保存计算机屏幕上的图像。本程序的特色在于它提供了与QQ截图类似的功能,这意味着它可能包括了区域选择、实时预览、编辑工具以及快速...

    JAVA截图小工具

    《JAVA截图小工具详解》 JAVA截图小工具是一款基于Java编程语言开发的实用应用程序,它为用户提供了方便快捷的屏幕截图功能。通过这款工具,用户能够轻松捕获屏幕上的任何区域,并将其保存到本地,同时自动复制到...

    java截图小工具

    Java截图小工具是一种基于Java编程语言实现的程序,它能够帮助用户捕获并保存计算机屏幕上的图像。在本文中,我们将深入探讨如何使用Java来创建一个简单的截图工具,包括涉及的关键类、方法以及实现过程。 首先,...

    很牛的Java截图工具源码

    Java截图工具源码是开发者们常用的实用工具之一,它能够帮助程序员在开发过程中快速获取屏幕快照,便于问题排查、功能演示或者用户交互设计。这个“很牛的Java截图工具源码”提供了一种高效、易用的方法来实现这一...

    java截屏小类

    一个很是用的java截屏小类,适合初学者,有注释,希望对大家的学习有帮助。

    Java截图小工具-附源码.rar

    Java截图小工具是一款基于Java语言开发的实用程序,它允许用户快速、方便地截取屏幕图像。本项目附带了完整的源代码,为开发者提供了一个学习和参考的实例,可以帮助初学者更好地理解Java图形用户界面(GUI)编程...

    java截屏小程序 附源码

    java截屏小程序 附源码,不能登QQ的时候可以讲究下,jar格式的,运行鼠标框选截屏内容,右键点击保存或退出。java新手,望多指教

    java截屏小助手(含源码)

    综上所述,这个Java截屏小助手是一个实用的工具,不仅提供了截图服务,还是一份优秀的学习材料。它展示了如何利用Java的图形库来实现屏幕捕获,以及如何构建一个简单的GUI应用程序。对于想要提升Java GUI编程技能...

    java 截图源代码

    超好用的java截图工具,源代码。 功能:1、左键按下选中所需截图区域,会有边框显示该区域 2、左键释放,会弹出菜单选择保存还是添加到系统粘贴板中 3、移动鼠标,随时显示图上对应点的ARGB值

    Java截屏+图像处理

    1. **Java截屏**: 要实现截屏功能,我们通常需要获取屏幕的大小,然后创建一个BufferedImage对象来存储截图。以下是一个简单的截屏示例: ```java import java.awt.*; import java.awt.image.BufferedImage; ...

    java截图代码

    根据给定的文件信息,我们将深入探讨如何在Java中实现屏幕截图的功能,特别是通过解析提供的代码片段来理解其工作原理。 ### Java截图代码详解 #### 1. 引入必要的库 ```java import java.awt.AWTException; ...

    很牛的Java截图工具

    【Java截图工具详解】 在Java编程环境中,开发一款强大的截图工具是相当实用的,尤其对于开发者来说,可以方便地进行程序界面的展示和问题定位。本篇将详细讲解这款名为"很牛的Java截图工具"的功能特性、核心实现...

    JAVA截图技术

    ### JAVA截图技术详解 在日常开发工作中,截图功能是一个实用且常见的需求,尤其是在即时通讯、远程协作等场景中。本文将详细介绍如何利用Java语言来实现类似QQ截图的功能,并深入探讨其实现原理和技术细节。 ####...

    JAVA截屏代码+单机软件

    本项目提供了一个已调通的Java截屏软件,它允许用户在单机环境下捕获屏幕快照并将其保存为PNG或JPEG格式。下面我们将深入探讨这个Java截屏软件的工作原理以及相关的Java技术知识点。 1. **Java AWT和Swing库**: ...

    Java截屏保存系统剪切板

    Java截屏保存系统剪切板是一项实用的技术,它允许用户通过编程方式截取屏幕快照,并将该图像存储到系统剪贴板中,以便于后续的复制和粘贴操作。这项技术主要基于Java的标准版(Java SE)环境,利用了Java的AWT和...

    java截屏小程序

    Java截屏小程序是一种实用工具,它允许用户在Java环境中实现屏幕捕获功能。这个程序能够创建PNG、JPG和GIF三种格式的图像文件,满足了不同场景下的需求。源码的提供使得开发者可以直接查看和学习其内部实现,进一步...

    Java屏幕截屏源代码

    需要注意的是,由于跨平台的特性,Java截屏可能会受到不同操作系统和显示设置的影响。例如,在多显示器环境下,可能需要处理多个屏幕的截取问题。因此,在实际开发中,要确保在各种环境下测试代码的正确性。 总的来...

    Swing学习之两个java截屏程序的实现

    在"Swing学习之两个java截屏程序的实现"这个主题中,我们将探讨如何利用Swing和Java的一些基本功能来开发屏幕截图应用程序。这里有两个关键的Java类文件:CaptureScreen.java和RobotToolMain.java,它们分别代表了两...

    java截图嵌入工具,给java嵌入截图

    java截图嵌入工具,给java嵌入截图

    java 截屏.rar

    首先,Java截屏的基本思路是利用`java.awt.Robot`类,它提供了模拟键盘和鼠标操作的能力,同时也包括了获取屏幕像素的能力。`Robot.createScreenCapture()`方法是关键,它可以用来创建一个代表屏幕某个区域的`...

Global site tag (gtag.js) - Google Analytics