Java 截屏工具类
PrintScreenUtils.java
package javax.utils; import java.awt.AWTException;
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 java.io.IOException;
import java.io.OutputStream; import javax.imageio.ImageIO; /**
* 截屏工具类
*
* @author Logan
* @createDate 2019-04-15
* @version 1.0.0
*
*/
public class PrintScreenUtils { /**
* 图片类型
*
* @author Logan
* @createDate 2019-04-15
* @version 1.0.0
*
*/
public class ImageType {
public static final String JPG = "jpg";
public static final String PNG = "png";
public static final String GIF = "gif";
} /**
* 截取当前屏幕图片
*
* @return BufferedImage对象
* @throws AWTException 抛出异常,由调用者处理
*/
public static BufferedImage getImage() throws AWTException {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle screenRect = new Rectangle(screenSize); Robot robot = new Robot();
return robot.createScreenCapture(screenRect);
} /**
* 截取当前屏幕图片并输出到指定文件
*
* @param output 指定输出文件,默认输出png格式
* @return 是否保存截屏成功
* @throws IOException 抛出异常,由调用者处理
* @throws AWTException 抛出异常,由调用者处理
*/
public static boolean write(File output) throws IOException, AWTException {
return write(ImageType.PNG, output);
} /**
* 截取当前屏幕图片并输出到指定文件
*
* @param imageType 输出图片类型
* @param output 指定输出文件
* @return 是否保存截屏成功
* @throws IOException 抛出异常,由调用者处理
* @throws AWTException 抛出异常,由调用者处理
*/
public static boolean write(String imageType, File output) throws IOException, AWTException {
return ImageIO.write(getImage(), imageType, output);
} /**
* 截取当前屏幕图片并输出到指定输出流
*
* @param output 图片输出流,可以是网络响应输出流,文件输出流等。默认输出png格式
* @return 是否输出截屏图片成功
* @throws IOException 抛出异常,由调用者处理
* @throws AWTException 抛出异常,由调用者处理
*/
public static boolean write(OutputStream output) throws IOException, AWTException {
return write(ImageType.PNG, output);
} /**
* 截取当前屏幕图片并输出到指定输出流
*
* @param imageType 输出图片类型
* @param output 图片输出流,可以是网络响应输出流,文件输出流等
* @return 是否输出截屏图片成功
* @throws IOException 抛出异常,由调用者处理
* @throws AWTException 抛出异常,由调用者处理
*/
public static boolean write(String imageType, OutputStream output) throws IOException, AWTException {
return ImageIO.write(getImage(), imageType, output);
} }
以下是测试程序
PrintScreenTest.java
package com.java.test; import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date; import javax.utils.PrintScreenUtils;
import javax.utils.PrintScreenUtils.ImageType; import org.apache.commons.io.FileUtils;
import org.junit.Test; /**
* @author Logan
* @createDate 2019-04-15
* @version 1.0.0
*
*/
public class PrintScreenTest { private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private SimpleDateFormat timeFormat = new SimpleDateFormat("yyyyMMddHHmmss"); @Test
public void demo() {
Date now = new Date();
String dir = dateFormat.format(now);
String name = timeFormat.format(now) + ".jpg";
File file = FileUtils.getFile(FileUtils.getUserDirectory(), dir, name); try {
FileUtils.forceMkdirParent(file);
System.out.println(file.getAbsolutePath());
boolean write = PrintScreenUtils.write(ImageType.JPG, file);
System.out.println(write);
} catch (Exception e) {
e.printStackTrace();
} } }
.
Java 截屏工具类的更多相关文章
- Java开发的一个简单截屏工具
//源代码 import java.awt.*;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transfe ...
- HttpTool.java(在java tool util工具类中已存在) 暂保留
HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...
- java文件处理工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- java格式处理工具类
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- Qt写一个截屏工具(窗口透明)
最近发现好多次打开QQ仅仅想用它来截屏 ⊙﹏⊙b汗 不如自己来写一个截屏工具,集成到自己的小工具箱里面 动手之前考虑一下要怎么实现,我考虑过的方案大概有下面两种 : 1. 监控全局鼠标事件 (真是“ ...
- 截屏工具 HyperSnap
听说Tencent开发了1款截屏工具,叫"snip".确实字体效果不错,但是丫只有for mac的,不知道脑子里怎么想的,该不是直接买了第三方的然后冠了个名儿吧. 那么Windows有没有类似的工具呢 ...
- Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类
Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类 =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- 使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。
1.使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间. package com.fline.aic.utils; import java.text.DateFormat ...
随机推荐
- tcp/ip 性能优化问题的思考学习
首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在 ...
- Centos6.10搭建Hadoop三节点分布式
(一)安装JDK 1. 下载JDK,解压到相应的路径 2. 修改 /etc/profile 文件(文本末尾添加),保存 sudo vi /etc/profile # 配置 JAVA_HOME exp ...
- socket编程(一)
因为下载器涉及到socket的知识,就花了一天学习了.因为时间原因分成几部分.(这里记录上的是基于Windows平台的) #include <stdio.h> #include <w ...
- CSS选择器笔记,element element和element > element 的区别
看官方解释 element element 例子: div p 官方解释:div内部所有的p元素 就是说 只要p在div内部.如果 p在span内部,span在div内部,p也算在div内部 < ...
- 【转】java序列化技术
转自:http://blog.csdn.net/yakihappy/article/details/3979373 Java 串行化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地 ...
- Java并发包concurrent类简析
1.ConcurrentHashMap ConcurrentHashMap是线程安全的HashMap的实现. 1)添加 put(Object key , Object value) Concurren ...
- 设计模式在Spring
设计模式在spring中的使用1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了:2.模版模式,这个也很明显,在各种BeanFactory以及 ...
- vue的组件传输
vue的组件传输有四种,我个人觉得pubsub(订阅/发布)是最好用的,因为他不用去考虑关系,所以我们下面就只讲解pubsub吧 1) 优点: 此方式可实现任意关系组件间通信(数据) 首先我们需要 ...
- vue的计算和监视属性,附一小实例
1. 计算属性 在computed属性对象中定义计算属性的方法 在页面中使用{{方法名}}来显示计算的结果 2. 监视属性: 通过通过vm对象的$watch()或watch配置来监视指定的属性 当属性 ...
- python的字符串操作
1.修改大小写 (1)title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写.这很有用, 因为你经常需要将名字视为信息.例如,你可能希望程序将值Ada.ADA和ada视为同一个名 ...