Java屏幕截图工具 捕获屏幕
原文:http://www.open-open.com/code/view/1420037709781
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants; /**
* 捕获屏幕,屏幕截图工具
*/
public class ScreenCaptureFrame extends JFrame implements ActionListener { private ScreenCaptureUtil scrCaptureUtil = null;// 捕获屏幕的工具类
private PaintCanvas canvas = null;// 画布,用于画捕获到的屏幕图像 public ScreenCaptureFrame() {
super("Screen Capture");
init();
} /**
* 初始化
*/
private void init() { scrCaptureUtil = new ScreenCaptureUtil();// 创建抓屏工具
canvas = new PaintCanvas(scrCaptureUtil);// 创建画布 Container c = this.getContentPane();
c.setLayout(new BorderLayout());
c.add(canvas, BorderLayout.CENTER); JButton capButton = new JButton("抓 屏");
c.add(capButton, BorderLayout.SOUTH);
capButton.addActionListener(this);
this.setSize(400, 400);
this.setVisible(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
} public void actionPerformed(ActionEvent e) {// 点击“抓屏”按钮时,在画布上画屏幕图像
canvas.drawScreen();
} public static void main(String[] args) {
new ScreenCaptureFrame();
}
} /**
* 抓屏工具类
*/
class ScreenCaptureUtil {
private Robot robot = null;// 抓屏的主要工具类
private Rectangle scrRect = null;// 屏幕的矩形图像 public ScreenCaptureUtil() {
try {
robot = new Robot();// 创建一个抓屏工具
} catch (Exception ex) {
System.out.println(ex.toString());
}
// 获取屏幕的矩形图像
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
scrRect = new Rectangle(0, 0, scrSize.width, scrSize.height);
} /**
* 抓屏方法
*
* @return 返回一个图像
*/
public BufferedImage captureScreen() {
BufferedImage scrImg = null;
try {
scrImg = robot.createScreenCapture(scrRect);// 抓的是全屏图
} catch (Exception e) {
System.out.println(e.toString());
}
return scrImg;
}
} /**
* 画布类,用于显示抓屏得到的图像
*/
class PaintCanvas extends JPanel {
private ScreenCaptureUtil scrCaptureUtil = null;// 抓屏工具
private BufferedImage scrImg = null;// 待画的图像 public PaintCanvas(ScreenCaptureUtil screenUtil) {
this.scrCaptureUtil = screenUtil;
} /**
* 重载JPanel的paintComponent,用于画背景
*/
protected void paintComponent(Graphics g) {
if (scrImg != null) {
int iWidth = this.getWidth();
int iHeight = this.getHeight();
g.drawImage(scrImg, 0, 0, iWidth, iHeight, 0, 0, scrImg.getWidth(),
scrImg.getHeight(), null);
}
} /**
* 画屏幕图像的方法
*/
public void drawScreen() {
Graphics g = this.getGraphics();
scrImg = scrCaptureUtil.captureScreen();// 抓屏,获取屏幕图像
if (scrImg != null) {
this.paintComponent(g);// 画图
}
g.dispose();// 释放资源
} }
Java屏幕截图工具 捕获屏幕的更多相关文章
- 用JAVA捕获屏幕、屏幕录像、播放
http://blog.csdn.net/njchenyi/article/details/447554 用JAVA捕获屏幕.屏幕录像.播放 标签: javaexceptionimageimportn ...
- java 诊断工具——Arthas
该说不说!小编做的这些功能,最讨厌的就是优化!某些前辈大佬写的代码小辈我实在不敢恭维!那逻辑!那sql! 接下来!今天的主角就登场了,阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 ja ...
- Java 正则表达式之捕获组
Java 正则表达式之捕获组 1. Java 正则表达式基础 2. Java 正则表达式之捕获组 一.概述 1.1 什么是捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显 ...
- Arthas Alibaba 开源 Java 诊断工具
Arthas 用户文档 English Docs Arthas(阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,A ...
- 8个超实用的Java测试工具和框架
Java入门 如果你才刚开始接触Java世界,那么要做的第一件事情是,安装JDK——Java Development Kit(Java开发工具包),它自带有Java Runtime Environme ...
- 【转】高效Java编程工具集锦
原文地址:http://geek.csdn.net/news/detail/57469 Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高 ...
- Java开发工具安装步骤内容如下
Java开发工具安装步骤内容如下 安装 开发工具 STS 链接下载网址 eclipse 链接下载网址 JDK安装 jdk链接下载地址 Marven环境 marven链接下载地址 Tomcat tomc ...
- JAVA开发工具eclipse中@author怎么改
1:JAVA开发工具eclipse中@author怎么改,开发的时候为了注明版权信息. 用eclipse开发工具默认的是系统用户,那么怎么修改呢 示例如图所示 首先打开Eclipse--->然后 ...
- Java Properties工具类详解
1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...
随机推荐
- C++笔记(仅C++特性,需C语言基础)
C++复习笔记一(类的声明定义应用与构造函数析构函数部分)const在C语言中是"不能被改变值的变量",而在C++种子则是"一种有类型描述的常量",常量必须初始 ...
- 破解点触码的识别之第三方平台超级鹰的SDK(python3版本)
import requestsfrom hashlib import md5 class Chaojiying(object): def __init__(self, username, passwo ...
- python基础——17(面向对象)
一.名称空间 名称空间有内置名称空间,全局名称空间,局部名称空间.它是用来存放名字与值对应关系的地方. test.py文件: num = 10 def fn(): print("fn run ...
- spring cloud 学习资源
1.https://blog.csdn.net/column/details/17737.html 2.https://blog.csdn.net/column/details/15197.html? ...
- HP DL380 G5 安装操作系统流程
1.准备服务器引导盘,设置光盘启动.注意:会将服务器所有数据清除 2.依据引导盘选择需要的安装系统 3.插入系统安装光盘.ps:若kvm等远程工具无法插入光盘,需要插入物理介质的安装光盘
- 【03】const
[03]const 魔芋总结: 1,声明的是常量,一经声明,不得修改.必须声明的同时并赋值.否则报错. 2,只在声明所在的块级作用域内有效. 3,const命令声明的常量也是不提升,同样存在暂时性死区 ...
- install composer on ubuntu14.04
1.download composer $ sudo apt-get install curl $ curl -sS https://getcomposer.org/installer | php $ ...
- 九度oj 题目1342:寻找最长合法括号序列II
题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即 ...
- Percona XtraBackup 2.4新特性之恢复单个表数据
参考文档:https://www.percona.com/doc/percona-xtrabackup/2.4/xtrabackup_bin/restoring_individual_tables.h ...
- 树形DP专题
DP是我的弱项, 此专题意在总结树形DP的解题思路. 最小代价遍历一棵树 给定一棵带边权的树 $T=(V,E)$ , 遍历它 (树的每个节点都访问至少一次) 所需的最小代价. 这里的代价由具体问题所定 ...