Java FAQ

Zrzut ekranu

Koziołek

Poniższy program jest bardzo prostą implementacją narzędzia do wykonywania zrzutów ekranu. Klasa Screenshoter dostarcza funkcjonalności pozwalające na wykonanie i zapisanie zrzutu we wskazanym miejscu oraz metodę makeAndSave, która łączy obie te funkcjonalności.

package net.programmers.java.faq;

import java.awt.AWTException;
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 javax.imageio.ImageIO;

public class Screenshoter {

    private Robot robot;
    private int width;
    private int height;
    private Rectangle screenRct;

    public Screenshoter() throws AWTException {
        robot = new Robot();
        width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
        screenRct = new Rectangle(0, 0, width, height);
    }

    public void makeAndSave(File target) throws IOException {
        save(target, make());
    }

    private void save(File target, BufferedImage image) throws IOException {
        ImageIO.write(image, "jpg", target);
    }

    public BufferedImage make() {
        if (robot != null) {
            return robot.createScreenCapture(screenRct);
        }
        return null;
    }
}

Obsługa wszystkich błędów jakie mogą się pojawić jest przerzucana na kod wykorzystujący tą klasę.
Przykładowy program wykorzystujący tą klasę:

package net.programmers.java.faq;

import java.io.File;
import java.util.logging.Logger;

public class ScreenShotDemo {

    private final static String RESOURCES_DIR = "./src/main/resources";

    public static void main(String[] args) throws Exception {
        if(!new File(RESOURCES_DIR).exists()){
            Logger.getAnonymousLogger().warning("Katalog docelowy nie istnieje! Tworzę nowy katalog!");
            new File(RESOURCES_DIR).mkdirs();
        }
        (new Screenshoter()).makeAndSave(new File(RESOURCES_DIR + "/screen.jpg"));
    }
}
FAQ

0 komentarzy