Разрешение robot.createScreenCapture не соответствует кнопке PrintScreen

Необходимо делать скриншот и сверять его с сохраненным на диске, который делали кнопкой PrintScreen. Для того чтобы сделать скрин средствами Java я использую класс Robot:

BufferedImage image = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));

Однако скриншоты не совпадают разрешением 1536-864 - java скрин, 1920-1080 - принт скрин. Если задать разрешение вручную:

robot.createScreenCapture(new Rectangle(0,0,1920,1080));

То получим тот же скрин с разрешением 1536-864 но с черной рамкой. Я немного в замешательстве.

Как делать скриншот с помощью Java аналогичный нажатию принт скрин ? Эмуляция нажатия на кнопку через robot.keyPress не вариант, т.к. у многих установлено по , типа Яндекс диск, который открывает поверх свое приложение.


Ответы (1 шт):

Автор решения: Dilitand

Люди минусят, но ничего не предлагают... Не смог разобраться почему robot.createScreenCapture делает скрин 1536-864 при разрешении экрана 1920-1080.

Решение нашлось следующее:

        MultiResolutionImage multiResolutionImage = robot.createMultiResolutionScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
        GraphicsDevice graphicsDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        Image screen = multiResolutionImage.getResolutionVariant(
                graphicsDevice.getDisplayMode().getWidth(), graphicsDevice.getDisplayMode().getHeight());
        ImageIO.write((BufferedImage) screen, "png", new File("test.png"));
→ Ссылка