Если я запускаю этот код:
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, он будет работать нормально и получит правильные цвета. Я думал, может быть, глубина цвета робота была причиной всех неправильных цветов, но я не знаю, в этом ли проблема, и я не знаю, как это изменить.