/**
 * Written by SaEeD
 * Description : Create screenshot from your background
 */
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;

public class Screenshot {
	public static void main(String[] args) throws Exception {
		// make sure we have exactly two arguments,
		// a waiting period and a file name
		if (args.length != 2) {
			System.err.println("Usage: java Screenshot " +
				"WAITSECONDS OUTFILE.png");
			System.exit(1);
		}
		// check if file name is valid
		String outFileName = args[1];
		if (!outFileName.toLowerCase().endsWith(".jpg")) {
			System.err.println("Error: output file name must " +
				"end with \".jpg\".");
			System.exit(1);
		}
		// wait for a user-specified time
		try {
			long time = Long.parseLong(args[0]) * 1000L;
			System.out.println("Waiting " + (time / 1000L) +
				" second(s)...");
			Thread.sleep(time);
		} catch(NumberFormatException nfe) {
			System.err.println(args[0] + " does not seem to be a " +
				"valid number of seconds.");
			System.exit(1);
		}
		// determine current screen size
		Toolkit toolkit = Toolkit.getDefaultToolkit();
		Dimension screenSize = toolkit.getScreenSize();
		Rectangle screenRect = new Rectangle(screenSize);
		// create screen shot
		Robot robot = new Robot();
		BufferedImage image = robot.createScreenCapture(screenRect);
		// save captured image to PNG file
		ImageIO.write(image, "jpeg", new File(outFileName));
		// give feedback
		System.out.println("Saved screen shot (" + image.getWidth() +
			" x " + image.getHeight() + " pixels) to file \"" +
			outFileName + "\".");
		// use System.exit if the program hangs after writing the file;
		// that's an old bug which got fixed only recently
		// System.exit(0);
	}
}