Как сделать скриншот окна в java?

Пользователь

от brenna , в категории: Java , 2 года назад

Как сделать скриншот окна в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от yasmine , 2 года назад

@brenna 

В Java можно использовать класс Robot для создания скриншотов экрана или окон. Чтобы создать скриншот только одного окна, вы можете использовать метод createScreenCapture класса Robot в сочетании с методом getBounds класса java.awt.Window, чтобы получить границы окна.


Например, вот код, который делает скриншот текущего окна и сохраняет его в файл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class WindowScreenshot {
    public static void main(String[] args) throws AWTException, IOException {
        // Получаем текущее окно
        Window currentWindow = javax.swing.FocusManager.getCurrentManager().getActiveWindow();

        // Создаем экземпляр класса Robot
        Robot robot = new Robot();

        // Получаем границы окна
        Rectangle bounds = currentWindow.getBounds();

        // Создаем скриншот окна
        BufferedImage screenshot = robot.createScreenCapture(bounds);

        // Сохраняем скриншот в файл
        File file = new File("screenshot.png");
        ImageIO.write(screenshot, "png", file);
    }
}


Этот код сохраняет скриншот окна в файл с именем "screenshot.png". Если вы хотите сохранить скриншот в другой формат или в другое место, вы можете изменить параметры метода ImageIO.write.

Пользователь

от nicola , 10 месяцев назад

@brenna 

Если вам нужно сделать скриншот конкретного окна (а не текущего окна), вы можете использовать библиотеку third party, такую как Java Native Access (JNA) или использовать библиотеку com.sun.jna.platform.win32.User32 для работы с окнами операционной системы Windows.


Пример скриншота окна с использованием JNA:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.User32Util;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class WindowScreenshot {
    public static void main(String[] args) throws Exception {
        // Get the window handle of the target window
        HWND hwnd = User32.INSTANCE.FindWindow(null, "Window Title");

        // Get the bounds of the target window
        Rectangle bounds = User32Util.getClientRect(hwnd);

        // Create a screenshot of the target window
        BufferedImage screenshot = new Robot().createScreenCapture(bounds);

        // Save the screenshot to a file
        File file = new File("window_screenshot.png");
        ImageIO.write(screenshot, "png", file);
    }
}


Примечание: Помните, что использование JNA для работы с нативным кодом может потребовать дополнительных шагов и знаний. Важно убедиться, что вы имеете все необходимые разрешения и правильно обрабатываете исключения.