zoukankan      html  css  js  c++  java
  • 使用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);
    		}
    	}
    }
    
    
    

    效果图预览

    如有运行问题,欢迎留言咨询,楼主看到后会第一时间来解答的
  • 相关阅读:
    2018年你需要知道的13个JavaScript工具库
    JavaScript一团乱,这是好事
    5大JavaScript前端框架简介
    大型Vuex应用程序的目录结构
    Github被微软收购,这里整理了16个替代品
    如何使用@vue/cli 3.0在npm上创建,发布和使用你自己的Vue.js组件库
    TensorFlow入门教程
    想成为顶级开发者吗?亲自动手实现经典案例
    2018年最值得关注的30个Vue开源项目
    SQL Server 合并复制遇到identity range check报错的解决 (转载)
  • 原文地址:https://www.cnblogs.com/nanstar/p/13664317.html
Copyright © 2011-2022 走看看