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> 这就奠 ...
随机推荐
- 如何优化sql查询
借鉴https://www.cnblogs.com/ssrstm/p/5753068.html和https://www.cnblogs.com/exe19/p/5786806.html 1. 对查询进 ...
- docker的网络(进阶)
overlay网络 overlay网络驱动程序会在多个docker守护程序(即多个主机上的docker守护程序)之间创建分布式网络.该网络(overlays)位于特定于主机的网络之上,允许连接到它的容 ...
- css实现盒尺寸重置、均匀分布的子元素、截断文本
盒尺寸重置 重置盒子模型,以便width s和height s并没有受到border 还是padding他们的影响 . CSS文字折断 css实现盒尺寸重置.均匀分布的子元素.截断文本 如何对多行文本 ...
- 【css】【动画】【转发】旋转动画
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <s ...
- 学习python的第十天(内置算法:列表数据类型,元祖数据类型,字典数据类型)
5.8自我总结 1.列表类型内置算法 1.必须掌握 1.按索引取值(正向取值+反向取值),即可存也可以取 #用于取其中一个值 name = ['yang','wen','yi'] ##正方向取wen, ...
- django第四天(路由别名,django2.x新特性和自定义转换器)
django第四天 路由别名 1.路由别名: 给路由路径命名一个名字 url(r'^login/$',views.login,name = 'login') 2.为什么要用路由别名 ①当路由路径过长时 ...
- 集群高可用之lvs+keepalive
集群高可用之lvs+keepalive keepalive简介: 负载均衡架构依赖于知名的IPVS内核模块,keepalive由一组检查器根据服务器的健康情况动态维护和管理服务器池.keepalive ...
- BZOJ 4128 Matrix ——BSGS
矩阵的BSGS. 只需要哈希一下存起来就可以了. 也并不需要求逆. #include <map> #include <cmath> #include <cstdio> ...
- [BZOJ1663] [Usaco2006 Open]赶集(spfa最长路)
传送门 按照时间t排序 如果 t[i] + map[i][j] <= t[j],就在i和j之间连一条边 然后spfa找最长路 #include <queue> #include &l ...
- Garbage First介绍
本文摘自<构建高性能的大型分布式Java应用>一书,Garbage First简称G1,它的目标是要做到尽量减少GC所导致的应用暂停的时间,让应用达到准实时的效果,同时保持JVM堆空间的利 ...