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);
    		}
    	}
    }
    
    
    

    效果图预览

    如有运行问题,欢迎留言咨询,楼主看到后会第一时间来解答的
  • 相关阅读:
    就打排序算法总结
    php 垃圾回收机制写时复制和引用计数
    zend studio 使用断点调试
    SiteServer 迁移至 Windows 2008 R2 问题汇总
    [项目改造中的点滴]C#中IDataReader和DataSet的区别与使用场景
    顺序分支知识总结
    我的第一篇博客
    [原创]删除GRUB引导恢复Windows引导,不用下载任何工具
    在C++builder中使用正则表达式,非boost库,简单!~
    SQL 存储过程优化经验
  • 原文地址:https://www.cnblogs.com/nanstar/p/13664317.html
Copyright © 2011-2022 走看看