Как сделать скриншот Java Swing программой?

Рейтинг: -3Ответов: 1Опубликовано: 12.04.2023

Программа в java swing генерирует картинку, которая должна быть сохранена в файле png/jpg. Это не 1 скриншот, таких картинок сотни, и я хочу сделать программу которая будет сама сохранять изображение с JFrame в какой-нибудь папке

Ответы

▲ 0Принят
  • Для получения скриншота можно использовать метод 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));
}