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