gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:47 24 4
gpt4 key购买 nike

如果我运行这段代码:

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 机器上运行上面的代码,它就可以正常工作并获得正确的颜色。我在想也许机器人的颜色深度是所有错误颜色的原因,但我不知道这是否是问题所在,我也不知道如何更改它。

最佳答案

如果机器人把所有的屏幕截图都拍下来,应该没有问题(两张截图的两个同样错误的像素显然是一样的)。

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

此外,标准屏幕捕获可能会校正 Gamma 并进行抗锯齿处理。也许这里就是这种情况。

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

关于Java 的 createScreenCapture 在 OS X 上不工作,产生完全错误的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8618373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com