Search
Write a publication
Pull to refresh

Готовим 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 файлами для приготовления.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.