#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. Если я не могу указать область приложения, но мне нужно захватить экран этого приложения. Как это активное окно, как я могу это сделать?