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

0 komentarzy