java - Java 中的屏幕捕获无法捕获整个屏幕

标签 java macos screen awt awtrobot

我有一小段代码可以用来记录时间 - 非常简单,它每四分钟拍一张我的桌面照片,这样以后我就可以回顾一下我白天做了什么 -它工作得很好,除了当我连接到外接显示器时——这段代码只截取我笔记本电脑屏幕的屏幕截图,而不是我正在使用的更大的外接显示器——有什么想法可以更改代码吗?我正在运行 OSX 以防相关...

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;

class ScreenCapture {
    public static void main(String args[]) throws
        AWTException, IOException {
            // capture the whole screen
int i=1000;
            while(true){
i++; 
                BufferedImage screencapture = new Robot().createScreenCapture(
                        new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );

                // Save as JPEG
                File file = new File("screencapture"+i+".jpg");
                ImageIO.write(screencapture, "jpg", file);
try{
Thread.sleep(60*4*1000);
}
catch(Exception e){
e.printStackTrace();
}

            }
        }
}

按照给出的解决方案,我做了一些改进,对于那些感兴趣的人,代码正在接受代码审查 https://codereview.stackexchange.com/questions/10783/java-screengrab

最佳答案

有教程Java multi-monitor screenshots这说明了如何去做。 基本上你必须迭代所有屏幕:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] screens = ge.getScreenDevices();

for (GraphicsDevice screen : screens) {
 Robot robotForScreen = new Robot(screen);
 ...

关于java - Java 中的屏幕捕获无法捕获整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10042086/

相关文章:

linux - VirtualBox guest 无法解析主机名,但 git 可以

javascript - 根据屏幕宽度显示 block

java - 在 JavaFX 中分组对象?

java 1.7 与 jdbc 驱动程序的兼容性

java - 构造函数未初始化字段?影子?

android - 是否可以在 android 的同一个选项卡中打开新的 Intent ?

c# - C#中的两种不同的窗体

java - 添加所有类

创建一个在运行时链接的dylib

macos - 在 Mac OS X Maverick 上安装/编译 NASM 包