如果我运行此代码:
BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ImageIO.write(image, "png", new File("takenwithrobot.png"));
它产生以下PNG:http ://davzy.com/screenshots/takenwithrobot.png
如果我使用内置的 OS X 屏幕捕获实用程序截取屏幕截图,我会得到以下信息: http: //davzy.com/screenshots/takenwithOSXscreenshotutility.png
如您所见,两者的颜色完全不同。经过几次实验,我确定上面使用内置 OS X 实用程序截取的屏幕截图中的颜色具有正确的颜色,而使用机器人截取的屏幕截图具有完全错误的颜色。
我正在编写一个逐像素比较屏幕截图的脚本,因此如果机器人生成颜色错误的屏幕截图,它将无法正常工作。有趣的是,如果我在 Windows 机器上运行上述程序,它就可以正常工作并获得正确的颜色。我在想也许机器人的颜色深度是所有错误颜色的原因,但我不知道这是否是问题,我不知道如何改变它。