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 截屏工具类的更多相关文章

  1. Java开发的一个简单截屏工具

    //源代码 import java.awt.*;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transfe ...

  2. HttpTool.java(在java tool util工具类中已存在) 暂保留

    HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...

  3. java文件处理工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  4. java格式处理工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  5. Qt写一个截屏工具(窗口透明)

    最近发现好多次打开QQ仅仅想用它来截屏 ⊙﹏⊙b汗 不如自己来写一个截屏工具,集成到自己的小工具箱里面 动手之前考虑一下要怎么实现,我考虑过的方案大概有下面两种  : 1. 监控全局鼠标事件 (真是“ ...

  6. 截屏工具 HyperSnap

    听说Tencent开发了1款截屏工具,叫"snip".确实字体效果不错,但是丫只有for mac的,不知道脑子里怎么想的,该不是直接买了第三方的然后冠了个名儿吧. 那么Windows有没有类似的工具呢 ...

  7. Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

    Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...

  8. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  9. 使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。

    1.使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间. package com.fline.aic.utils; import java.text.DateFormat ...

随机推荐

  1. tcp/ip 性能优化问题的思考学习

    首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层.  其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在 ...

  2. Centos6.10搭建Hadoop三节点分布式

    (一)安装JDK 1. 下载JDK,解压到相应的路径 2.  修改 /etc/profile 文件(文本末尾添加),保存 sudo vi /etc/profile # 配置 JAVA_HOME exp ...

  3. socket编程(一)

    因为下载器涉及到socket的知识,就花了一天学习了.因为时间原因分成几部分.(这里记录上的是基于Windows平台的) #include <stdio.h> #include <w ...

  4. CSS选择器笔记,element element和element > element 的区别

    看官方解释 element element  例子: div p 官方解释:div内部所有的p元素 就是说 只要p在div内部.如果 p在span内部,span在div内部,p也算在div内部 < ...

  5. 【转】java序列化技术

    转自:http://blog.csdn.net/yakihappy/article/details/3979373 Java 串行化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地 ...

  6. Java并发包concurrent类简析

    1.ConcurrentHashMap ConcurrentHashMap是线程安全的HashMap的实现. 1)添加 put(Object key , Object value) Concurren ...

  7. 设计模式在Spring

    设计模式在spring中的使用1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了:2.模版模式,这个也很明显,在各种BeanFactory以及 ...

  8. vue的组件传输

    vue的组件传输有四种,我个人觉得pubsub(订阅/发布)是最好用的,因为他不用去考虑关系,所以我们下面就只讲解pubsub吧 1) 优点: 此方式可实现任意关系组件间通信(数据)   首先我们需要 ...

  9. vue的计算和监视属性,附一小实例

    1. 计算属性 在computed属性对象中定义计算属性的方法 在页面中使用{{方法名}}来显示计算的结果 2. 监视属性: 通过通过vm对象的$watch()或watch配置来监视指定的属性 当属性 ...

  10. python的字符串操作

    1.修改大小写 (1)title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写.这很有用, 因为你经常需要将名字视为信息.例如,你可能希望程序将值Ada.ADA和ada视为同一个名 ...