Java实现电脑屏幕的截取并保存成图片

其实截图的知识也不难
额(⊙o⊙)…
下面那个代码写辣么辣么长是俺的错
(时隔一年我回来看一眼,忍不住道当年哪个傻B写的傻B玩意儿……心酸心累心惆怅)
为了表达歉意
我特定重新写了一个放在最最最后面
截图主要用到ImageIO【保存成文件】、BufferedImage【临时存储】、Robot【截取】等知识
具体怎么操作我在最最最最后面那个代码里面有注解
实例代码:

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

public class ScreenCapture {
    private String saveDir;     //存放图片的路径
    private String name;        //包括后缀的图片全称
    private String imageFormat; //图片存储格式,即后缀
    private String imageName;   //图片的名字,不包括后缀
    private Dimension screen;   //屏幕
    private Rectangle screenRectangle;      //矩形框

    public ScreenCapture() {
        saveDir = "D:\\image";
        screen = Toolkit.getDefaultToolkit().getScreenSize();
        screenRectangle = new Rectangle(screen);
        imageFormat = "png";
    }

    public void captureScreen() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        imageName = sdf.format(new Date());     //默认名字
        name = imageName + "." + imageFormat;

        File imageDir = new File(saveDir);
        if (!imageDir.exists()) {   //如果路径不存在,则创建
            imageDir.mkdirs();
        }

        //截屏
        BufferedImage image = null;
        try {
            Robot robot = new Robot();  //记得抛异常
            image = robot.createScreenCapture(screenRectangle);
        } catch (AWTException e) {
            e.printStackTrace();
        }
        try {
            ImageIO.write(image, imageFormat, new File(imageDir, name));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void captureScreen(String imageName) {
        this.imageName = imageName;
        name = imageName + "." + imageFormat;

        File imageDir = new File(saveDir);
        if (!imageDir.exists()) {   //如果路径不存在,则创建
            imageDir.mkdirs();
        }

        //截屏
        BufferedImage image = null;
        try {
            Robot robot = new Robot();  //记得抛异常
            image = robot.createScreenCapture(screenRectangle);     //获取指定的图片
        } catch (AWTException e) {
            e.printStackTrace();
        }
        try {
            ImageIO.write(image, imageFormat, new File(imageDir, name));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String getSaveDir() {
        return saveDir;
    }

    public void setSaveDir(String saveDir) {
        this.saveDir = saveDir;
    }

    public String getImageFormat() {
        return imageFormat;
    }

    public void setImageFormat(String imageFormat) {
        this.imageFormat = imageFormat;
    }

    public String getImageName() {
        return imageName;
    }

    //测试
    public static void main(String[] args) {
        ScreenCapture screen =  new ScreenCapture();
        screen.captureScreen();
        screen.setSaveDir("D:\\image");
        screen.setImageFormat("jpg");
        screen.captureScreen("我是白痴");
    }
}

++++++++++++++++++++++++++++++++++++++++++++++++++++
这里是2018.03.16时候推出的爱心代码
方便初学者参考[帅]

import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;

public class Main {
    public static void main(String[] args) throws AWTException, IOException {
        Dimension screen = null;    //电脑屏幕大小
        Rectangle screenRect = null;//截图的宽高
        String imageName = "我是白痴";  //图片的名称
        String imageFormat = "png"; //图片的格式,即后缀
        String saveDir = "C:/";     //图片存放的路径
        BufferedImage image = null; //暂存图片的缓存
        Robot robot = null;         //负责截屏的操作者

        screen = Toolkit.getDefaultToolkit().getScreenSize();
        screenRect = new Rectangle(screen);
        robot = new Robot();        //抛出AWTException
        image = robot.createScreenCapture(screenRect);      //将得到的屏幕信息存放在缓存里面
        //将缓存里面的屏幕信息以图片的格式存在制定的磁盘位置
        ImageIO.write(image, imageFormat, new File(saveDir, imageName + "." + imageFormat));    //抛出IOException
    }
}

猜你喜欢

转载自blog.csdn.net/liumang9438/article/details/78357720
今日推荐