Как сделать скриншот Java Swing программой?
Программа в java swing генерирует картинку, которая должна быть сохранена в файле png/jpg. Это не 1 скриншот, таких картинок сотни, и я хочу сделать программу которая будет сама сохранять изображение с JFrame в какой-нибудь папке
Ответы (1 шт):
Для получения скриншота можно использовать метод
Robot::createScreenCapture, который возвращаетBufferedImageдля заданного прямоугольникаRectangle(курсор мыши не будет присутствовать)Получить координаты прямоугольника можно при помощи метода
Toolkit::getScreenSizeДля сохранения
BufferedImageв виде картинки требуемого формата можно использовать методImageIO::writeДля отдельного
JFrameможно взять его координатыJFrame::getBounds
Вариант решения:
public static void saveScreenshot(String pngFilename) throws IOException {
saveScreenshot(pngFilename, new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
}
public static void saveFrameImage(String pngFilename, JFrame frame) throws IOException {
saveScreenshot(pngFilename, frame.getBounds());
}
private static void saveScreenshot(String pngFilename, Rectangle rect) throws IOException {
BufferedImage image = new Robot().createScreenCapture(rect);
ImageIO.write(image, "png", new File(pngFilename));
}