使用Robot.createScreenCapture截图返回黑色图像?

5
我正在尝试使用以下代码在Windows 7上捕获屏幕:
 Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
 BufferedImage capture = new Robot().createScreenCapture(screenRect);
 ImageIO.write(capture, "jpg", new File("C:/capture/ScreenShot.jpg"));

这段代码返回了一张黑色的图片,不知道为什么,请帮忙解决。

导入的内容如下:

import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;

Thank you in advance.


1
代码没有问题...必须是包导入的问题...请确保你导入了java.awt.*或其他什么包? - Saurabh Gaur
@SaurabhGaur 我已经添加了我正在使用的导入,但截图仍然是黑色图像。 - Nomi Khurram
请点击以下链接,或许可以帮到您:https://community.oracle.com/thread/1289188?start=0&tstart=0 - Saurabh Gaur
必须使用机器人吗?我们不能使用其他东西吗? - Kishan Patel
如果您想使用Selenium进行屏幕截图,请访问以下链接:https://dev59.com/FXA75IYBdhLWcg3wMmGo - Saurabh Gaur
显示剩余7条评论
4个回答

1
检查一下,我认为这会对您有所帮助。
    public void screenCapture() {
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    Rectangle rectangle = new Rectangle(dimension);
    BufferedImage screen = robot.createScreenCapture(rectangle);
    try {
        ImageIO.write(screen, "jpg", new File("screenshot.jpg"));
    } catch (IOException e) {

        e.printStackTrace();
    }

然后只需使用这个 void。 :)

0

在Ubuntu上使用Java 11和Java 12时遇到了类似的问题,通过升级到Java 13进行修复。


0
在我的情况下,问题出在wildfly启动模式上。当它作为服务启动时,我得到了一个黑屏。当我通过standalone.bat手动启动它时,问题就解决了。

-1

也许有另一个ScreenDevice。
尝试一下

Robot r = new Robot(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice());
BufferedImage capture = r.createScreenCapture(screenRect);

没有运气。截图仍然是相同的黑色图像。 - Nomi Khurram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接