Java CreateCreenCapture не работает на OS X, выдает совершенно неправильные цвета - PullRequest
3 голосов
/ 23 декабря 2011

Если я запускаю этот код:

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

1 Ответ

1 голос
/ 23 декабря 2011

Если робот делает все снимки экрана, проблем не должно быть (два одинаковых ложных пикселя двух снимков экрана, очевидно, совпадают).

Сначала я увидел разницу между окном приложения, имеющим фокус, и окномне.Может быть, это одно из объяснений.Для различных оттенков серого в строке состояния NetBeans.

Кроме того, стандартный снимок экрана может исправить гамму и сделать сглаживание.Возможно, дело в этом.

(К сожалению, мой монитор не Mac не показывает других отличий.)

...