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