LINUX.ORG.RU

История изменений

Исправление Ygor, (текущая версия) :

Привет. Увидел новость про скриншотер и решил написать свой с минимальным набором функций.

Короче тоже подспудно была эта идея, который раз увидел пост в трекере и несмог себя сдержать, загуглить и «написать» на жаве. Под вендой заработало. Потестите плиз на линуксе, с иксами и вайландом.

package Test;

import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.*;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class ScrSht {
		public static void main(String[] args) throws IOException, HeadlessException, AWTException, InterruptedException {
		if(args[1] != null) Thread.sleep(Long.valueOf(args[1])); //спим Long.valueOf(args[1]) перед снимком.
			saveScreenshot(args[0]);

	}
	/**
	 * честно с копипащено с https://ru.stackoverflow.com/questions/1512808/%D0%9A%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%81%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82-java-swing-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BE%D0%B9
	 * @param pngFilename передаём в этот параметр первый аргумент arg[0] в нём указывайте имя файла в main().
	 * @throws IOException
	 * @throws HeadlessException
	 * @throws AWTException
	 */
	public static void saveScreenshot(String pngFilename) throws IOException, HeadlessException, AWTException {
	    saveScreenshot(pngFilename, new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
	}

	public static void saveFrameImage(String pngFilename, JFrame frame) throws IOException, AWTException {
	    saveScreenshot(pngFilename, frame.getBounds());
	}


	private static void saveScreenshot(String pngFilename, Rectangle rect) throws IOException, AWTException {
	    BufferedImage image = new Robot().createScreenCapture(rect);
	    ImageIO.write(image, "png", new File(pngFilename));
	}

}

Запускается

java .\ScrSht.java 11.png 1000

1 аргумент имя файла, второй аргумент количество миллисекунд до снимка.

Исходная версия Ygor, :

Привет. Увидел новость про скриншотер и решил написать свой с минимальным набором функций.

Короче тоже подспудно была эта идея, который раз увидел пост в трекере и несмог себя сдержать, загуглить и «написать» на жаве. Под вендой заработало. Потестите плиз на линуксе, с иксами и вайландом.

package Test;

import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.*;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class ScrSht {
		public static void main(String[] args) throws IOException, HeadlessException, AWTException, InterruptedException {
		if(args[1] != null) Thread.sleep(Long.valueOf(args[1])); //спим Long.valueOf(args[1]) перед снимком.
			saveScreenshot(args[0]);

	}
	/**
	 * честно с копипащено с https://ru.stackoverflow.com/questions/1512808/%D0%9A%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%81%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82-java-swing-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BE%D0%B9
	 * @param pngFilename передаём в этот параметр первый аргумент arg[0] в нём указывайте имя файла в main().
	 * @throws IOException
	 * @throws HeadlessException
	 * @throws AWTException
	 */
	public static void saveScreenshot(String pngFilename) throws IOException, HeadlessException, AWTException {
	    saveScreenshot(pngFilename, new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
	}

	public static void saveFrameImage(String pngFilename, JFrame frame) throws IOException, AWTException {
	    saveScreenshot(pngFilename, frame.getBounds());
	}


	private static void saveScreenshot(String pngFilename, Rectangle rect) throws IOException, AWTException {
	    BufferedImage image = new Robot().createScreenCapture(rect);
	    ImageIO.write(image, "png", new File(pngFilename));
	}

}