PrintScreenUtils.javajava
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); } }
如下是測試程序apache
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(); } } }
.工具