使用Java实现静默屏幕截图

代码实现了使用Java静默截屏(截屏的时候不需要申请权限,不会有任何弹窗),并自动打开截取的屏幕图片,

我们把这个部分编译一下,使用java 类名,可以实现快速截取当前屏幕信息,或者是在编辑器里点击运行,来执行这部分代码

楼主编译完成的class文件 https://files.cnblogs.com/files/nanstar/javaScreen.zip

运行成功截图(前提是电脑上需要安装的有Java环境)

编译文件 javac javaScreen.java

运行文件 java javaScreen

代码部分

package com.order.order;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 小墨
 * @date 2020/9/13 23:57
 * 实现效果:
 * 运行程序后可以直接截取当前屏幕内容并保存到指定路径,然后使用默认的图片查看程序自动打开截取的屏幕图片
 * 实现思路:
 * 首先获取屏幕的宽和高,然后使用工具类捕捉屏幕,使用当前时间创建目录和文件,然后打开文件
 */
public class javaScreen {

	public static void main(String[] args) throws AWTException, IOException {
		// 获取屏幕的尺寸(屏幕宽高)
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		System.out.println("屏幕的宽和高是:" + screenSize.getWidth() + " x " + screenSize.getHeight());

		// 使用工具类截取屏幕
       //利用获取到的屏幕宽高捕捉当前的屏幕内容
		BufferedImage image = new Robot().createScreenCapture(new Rectangle(screenSize));

		// 设置日期格式,作为目录名(例如:20200914)
		DateFormat dfDirectory = new SimpleDateFormat("yyyyMMddhhmmss");

		// 使用自定义路径创建一个用于保存图片的文件夹,我定义在了D盘
		File screenCaptureDirectory =
			new File(
            "D:\\"
                + File.separator
                + "ScreenCapture"
                + File.separator
                + dfDirectory.format(new Date()));

		//判断目录是否存在,不存在的话直接创建
		if (!screenCaptureDirectory.exists()) {
			//创建目录的操作
			screenCaptureDirectory.mkdirs();
			System.out.println("目录 " + screenCaptureDirectory.getName() + " 创建成功");
		}

		// 设置日期格式,作为图片名
		DateFormat dfImageName = new SimpleDateFormat("yyyyMMddhhmmss");

		// 指定路径,并以特定的日期格式作为图片的名称
		File imageFile = new File(screenCaptureDirectory, (dfImageName.format(new Date()) + ".png"));

		// 以指定的图片格式将截取的图片写到指定的文件
		ImageIO.write(image, "png", imageFile);

		// 自动打开刚才截屏的照片
		if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.OPEN)) {
			Desktop.getDesktop().open(imageFile);
		}
	}
}


效果图预览

如有运行问题,欢迎留言咨询,楼主看到后会第一时间来解答的
posted @ 2020-09-14 00:44  孤水寒月  阅读(707)  评论(0编辑  收藏  举报