Java的createScreenCapture在OS X上不起作用,产生完全错误的颜色



如果我运行这段代码:

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

如果我使用内置的OSX屏幕捕获工具截图,我得到以下内容:http://davzy.com/screenshots/takenwithOSXscreenshotutility.png

你可以看到两者的颜色是完全不同的。经过几次实验,我确定上面用内置OS X实用程序拍摄的截图中的颜色是正确的,而用robot拍摄的截图中的颜色完全错误。

我正在写一个脚本,比较像素逐像素的截图,所以如果机器人是产生错误的颜色截图,它将无法工作。有趣的是,如果我在Windows机器上运行上面的程序,它工作得很好,并得到正确的颜色。我在想可能是机器人的颜色深度导致了所有错误的颜色,但我不知道是不是这个问题,我不知道如何改变它

如果机器人拍摄了所有的屏幕截图,应该没有问题(两个截图的两个同样假的像素显然是相同的)。

首先,我看到了有焦点和没有焦点的应用程序窗口之间的区别。也许这是一种解释。对于NetBeans状态行上的不同灰色。

此外,标准的屏幕截图可能会纠正伽马和抗锯齿。也许这里的情况就是这样。

(不幸的是,我的非mac显示器没有显示其他差异)

最新更新