如何使用java捕获某些应用程序的屏幕?
Posted
技术标签:
【中文标题】如何使用java捕获某些应用程序的屏幕?【英文标题】:How can I use java to capture the screen of some applications? 【发布时间】:2021-01-30 21:02:51 【问题描述】:我发现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);
【讨论】:
如果我无法指定应用程序的区域,但我必须捕获该应用程序的屏幕。就像它是一个活动窗口一样,我该怎么做?以上是关于如何使用java捕获某些应用程序的屏幕?的主要内容,如果未能解决你的问题,请参考以下文章