在Java中屏幕捕获没有捕捉整个屏幕 [英] Screen Capture in Java not capturing whole screen

查看:218
本文介绍了在Java中屏幕捕获没有捕捉整个屏幕的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一小块code的,我用它来记录时间 - 很干脆它需要我的桌面图片每四分钟这样,以后我可以回去了什么我已经到时一天 - 它的伟大工程,当我连接到外部显示器除外 - 这code只需要我的笔记本电脑屏幕的截屏,而不是更大的外部监视器,我从工作 - 任何想法如何改变code?我的情况下,这是相关的运行OSX ...

I have a small piece of code that I use to keep track of time - very simply it takes a picture of my desktop every four minutes so that later I can go back over what I've been up to during the day - It works great, except when I connect to an external monitor - this code only takes a screen shot of my laptop screen, not the larger external monitor I'm working from - any ideas how to change the code? I'm running OSX in case that's relevant...

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();
}

            }
        }
}


继给出的解决方案,我做了一些改进和code,对于那些有兴趣,是在code检讨在<一个href=\"http://$c$creview.stackexchange.com/questions/10783/java-screengrab\">http://$c$creview.stackexchange.com/questions/10783/java-screengrab

推荐答案

有一个教程的 Java的多显示器截图,显示如何做到这一点。
基本上,你必须遍历所有的屏幕:

There is a tutorial Java multi-monitor screenshots that shows how to do it. Basically you have to iterate all screens:

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

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

这篇关于在Java中屏幕捕获没有捕捉整个屏幕的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆