Как я могу использовать Java для захвата экрана некоторых приложений?

#java #awt #awtrobot

#java #awt #awtrobot

Вопрос:

Я обнаружил, что java awt может захватывать весь экран, но как я могу захватить экран определенного приложения? Например, я открыл приложение matlab и приложение eclipse. И я не могу указать программе размер экрана приложения и просто знаю, что matlab сейчас является активным окном. И я хочу захватывать только экран Matlab. Как я могу это сделать?

 import java.awt.AWTException; 
import java.awt.Rectangle; 
import java.awt.Toolkit; 
import java.awt.Robot; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import java.io.File; 
import javax.imageio.ImageIO; 
  
public class Screenshot { 
    public static final long serialVersionUID = 1L; 
    public static void main(String[] args) 
    { 
        try { 
            Thread.sleep(120); 
            Robot r = new Robot(); 
  
            // It saves screenshot to desired path 
            String path = "D:// Shot.jpg"; 
  
            // Used to get ScreenSize and capture image 
            Rectangle capture =  
            new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); 
            BufferedImage Image = r.createScreenCapture(capture); 
            ImageIO.write(Image, "jpg", new File(path)); 
            System.out.println("Screenshot saved"); 
        } 
        catch (AWTException | IOException | InterruptedException ex) { 
            System.out.println(ex); 
        } 
    } 
} 
  

Ответ №1:

Чтобы сделать снимок экрана части экрана, нам нужно указать область прямоугольника, которую нужно захватить.следующие инструкции создают область захвата, которая является первой четвертью экрана.

 try {
            Robot robot = new Robot();
            String format = "jpg";
            String fileName = "PartialScreenshot."   format;
             
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            Rectangle captureRect = new Rectangle(0, 0, screenSize.width / 2, screenSize.height / 2);
            BufferedImage screenFullImage = robot.createScreenCapture(captureRect);
            ImageIO.write(screenFullImage, format, new File(fileName));
             
            System.out.println("A partial screenshot saved!");
        } catch (AWTException | IOException ex) {
            System.err.println(ex);
        }
  

Комментарии:

1. Если я не могу указать область приложения, но мне нужно захватить экран этого приложения. Как это активное окно, как я могу это сделать?