История изменений
Исправление 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));
}
}