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. Python数据可视化--matplotlib

    抽象化|具体化: 如盒形图 | 现实中的图 功能性|装饰性:没有装饰和渲染 | 包含艺术性美学上的装饰 深度表达|浅度表达:深入层次的研究探索数据 | 易于理解的,直观的表示 多维度|单一维度:数据的 ...

  2. $('#').formValidation校验网址

    $('#addCarouselInfoForm').formValidation({ message: '格式不正确', //不忽略隐藏域验证 excluded: [], icon: { valid: ...

  3. Mybatis学习笔记7 - select查询的相关属性使用

    1.当接口的返回类型是集合List时,resultType要写集合中元素的类型 示例如下: 接口定义: package com.mybatis.dao; import com.mybatis.bean ...

  4. Kudu-Impala集成特性

    不多说,直接上干货! Kudu-Impala 集成特性 CREATE / ALTER / DROP TABLE Impala 支持使用 Kudu 作为持久层来 creating(创建),alterin ...

  5. php字符串函数详解

    nl2br 功能:化换行符为<br> <?php $str = "cat isn't \n dog"; $result = nl2br($str); echo $ ...

  6. jQuery 间歇式无缝滚动特效分享(三张图片平行滚动)

    最近项目中门户首页需要做出图片间歇式无缝滚动特效,但是在网上找资料都是不太理想,不过可以指导.最后自己写了一个demo实现了这个特效,分享出来. 1.jquery.cxscroll.js /*! * ...

  7. Spring Boot集成Reactor事件处理框架的简单示例

    1. Reactor简介 Reactor 是 Spring 社区发布的基于事件驱动的异步框架,不仅解耦了程序之间的强调用关系,而且有效提升了系统的多线程并发处理能力. 2. Spring Boot集成 ...

  8. jq实例

    1.导航栏 <style type="text/css"> * {padding:0;margin:0;list-style:none;} img { width:11 ...

  9. JS动态创建SVG元素并绑定事件

    var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); svg.set ...

  10. MySQL中的information_schema

    information_schema 数据库是MySQL自带的,可看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信息.如数据库名,数据库的表,表栏的数据类 ...