Как стать автором
Обновить

Готовим screenshot с Java

Доброго времени суток, хабравчане!

Далее выложу рецепт для Java программы делающей снимок экрана.

Для приготовления блюда нам нужно:
  • Место, где сохранить снимок. Берем домашнюю директорию пользователя. Для Windows: это Desktop.
  • Знание размера экрана: Toolkit нам в помощь.
  • В общем-то, и все что нужно, приступаем.

Начинаем с того что используем Robot класс, в котором доступен метод createScreenCapture(). Данный метод позволяет получить снимок произвольно выбранной части экрана. Для получения размера экрана берем метод getScreenSize() из класса Toolkit.

В итоге получаем что то вроде:

package habra.screen; 

import java.io.File;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.Rectangle;
import java.io.IOException;
import java.awt.AWTException;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import javax.swing.filechooser.FileSystemView;

public class App {

	public static void main(String[] args) {
		try {
			ImageIO.write(grabScreen(), "png", new File(getHomeDir(), "screen.png"));
		} catch (IOException e) {
			System.out.println("IO exception"+e);
		}
	}

	private static File getHomeDir() {
		FileSystemView fsv = FileSystemView.getFileSystemView();
		return fsv.getHomeDirectory();
	}

	private static BufferedImage grabScreen() { 
		try {
			return new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())) ;
		} catch (SecurityException e) {
		} catch (AWTException e) {
		}
		return null;
	}

}



Все помещается в App.java и жарится в командной строке:

SET proj=screen
REM Delete classes dir
RMDIR /S /Q classes
mkdir classes

REM Compiling
javac -sourcepath src -d classes src\habra\%proj%\App.java 
mkdir jars
del jars\%proj%.jar
REM Making jar
jar cfe jars\%proj%.jar habra.%proj%.App -C classes .


Запускаем: java -jar jars\%proj%.jar

Раз два три! Вот и все! Берем снимок.

P.S. Для ленивых: скачиваем архив с .java файлами для приготовления.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.