このコードを実行すると:
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ユーティリティで撮影した上記のスクリーンショットの色は正しい色であり、ロボットで撮影したスクリーンショットの色は完全に間違っていると判断しました。
スクリーンショットのピクセルごとに比較するスクリプトを書いているので、ロボットが間違った色のスクリーンショットを作成している場合、それは機能しません。興味深いことに、上記をWindowsマシンで実行すると、問題なく動作し、正しい色が得られます。ロボットの色深度が色違いの原因かもしれないと思っていたのですが、それが問題なのかわからないし、どうやって変えたらいいのかわかりません。