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. hadoop用put上传文件时报错

    用命令-put上传文件 报错0 datanode(s) running 原因是进行了多次格式化 解决办法: 停止集群 删除在hdfs中配置的data目录(即在core-site.xml中配置的hado ...

  2. css3 移动端页面全屏旋转,横屏显示。

    css3旋转模拟手机横屏. 当手机不能自动旋转时,或有特殊需求.用css3 transform,实现横屏展示. 注意: 相关样式注意横屏的显示. touch的手势方向没有变,依旧是原来方向,若有相关插 ...

  3. grunt 合并压缩js和css文件(二)

    具体node及文件配置请看: grunt 安装使用(一) 要压缩的文件 --src/ ajax.js assets.js touch.js zepto.js 目录结构: dist/ node_modu ...

  4. c++中 重载 覆盖 隐藏的区别 附加 mutable笔记

    成员函数被重载的特征有: 1) 相同的范围(在同一个类中): //2) 函数名字相同: 3) 参数不同: 4) virtual关键字可有可无. 覆盖的特征有: 1) 不同的范围(分别位于派生类与基类) ...

  5. 关于Ajax的优点与缺点

    AJAX (Asynchronous Javascript and XML) 是一种交互式动态web应用开发技术,该技术能提供富用户体验. 完全的AJAX应用给人以桌面应用的感觉.正如其他任何技术,A ...

  6. maya 安装失败/出错/卸载 2018/2017/2016/2015/2013/2012

    AUTO Uninstaller 更新下载地址 1.选择软件 2.选择版本 3.点击[开始卸载]

  7. Easy Touch 摇感控制人物移动

    Easy Touch 摇感控制人物移动 public class joystick : MonoBehaviour { public float Speed;             //定义速度 p ...

  8. 简单的JS统计静态网站访问次数

    最简单的静态页面刷新 <html> <head> <meta http-equiv="Content-Type" content="text ...

  9. 浅析sorted函数中的key

    在python编程中,常对数据进行各种处理,排序尤为重要.但是在使用sorted内置函数时,我们发现它有三个参数. 第一个参数为可迭代数据,可以为一个字符串,数组,列表等等. 第三个为是否倒置输出. ...

  10. HTML三种样式引入方式

    HTML三种样式引入方式   HTML有三种样式引入方式:行内样式(inline Styles).嵌入式样式表(Embedded Style Sheets).外部样式表(External Style ...