Разрешение 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 шт):
Люди минусят, но ничего не предлагают... Не смог разобраться почему 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"));