Java Robot 截图在Windows10企业版黑屏

public RobotService() {
		
		try {
			robot = new Robot();//核心机器人类,用于截图,键盘或鼠标事件的重放执行。
			DisplayMode displayMode = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode();
			Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
			int width = (int)screensize.getWidth();
			int height = (int)screensize.getHeight();
			realhight = height;
			realwidth = width;
			System.out.println("宽度:" + width + "  高度:" + height);
			rectangle = new Rectangle(0, 0, displayMode.getWidth(), displayMode.getHeight());
		} catch (AWTException e) {
			logger.error("",e);
		}
		
	}

通过getCapture方法获取截图


private byte[] getCapture(Robot robot,Rectangle rectangle) {
		BufferedImage bufferedImage =  robot.createScreenCapture(rectangle);
		
		//获得一个内存输出流
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		
		//将图片数据写入内存流中
		try {
			
			Thumbnails.of(bufferedImage).scale(1.0f).outputQuality(0.5f).outputFormat("jpg").toOutputStream(baos);
		} catch (Exception e) {
			logger.error("图片写入出现异常",e);
		}

		return baos.toByteArray();
	}

没用过,也没遇到过。你可以尝试把异常信息IO到本地磁盘。在蓝屏恢复后检查检查。

或者记录下你蓝屏的详细代码信息,通过搜索引擎查查。

可以截到图片。只是全黑。没有异常信息。在普通windows电脑正常

我用GPT4生成了一个 Java 的截屏代码,我本地工作正常,你可以试试看。


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

public class ScreenshotExample {
    public static void main(String[] args) {
        try {
            // 创建 Robot 实例
            Robot robot = new Robot();

            // 获取屏幕尺寸
            Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());

            // 捕获屏幕图像
            BufferedImage screenFullImage = robot.createScreenCapture(screenRect);

            // 保存图像到文件
            File outputfile = new File("screenshot.png");
            
            ImageIO.write(screenFullImage, "png", outputfile);

            System.out.println("Screenshot saved!");

        } catch (AWTException | IOException ex) {
            System.err.println(ex);
        }
    }
}

我的 Windows 版本是:Windows 10 IoT 企业版 LTSC