如何以原生屏幕分辨率捕获屏幕截图?
用于运行程序的机器是macbook pro retina 15,分辨率为2880 x 1800像素。但是,来自createScreenCapture()
类的Robot
输出仅输出一半。
以下尺寸 screenSize 仅返回1440 x 900像素。
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
我目前正在运行JRE 9和最新版本的Eclipse。
答案 0 :(得分:2)
机器人不会做这项工作,它在高分辨率下会失败!
如果您使用 Windows ,请尝试此操作,否则请告诉我哪个操作系统 您使用,我可以帮您吗
使用 Java 12 和 JNA 5.4.0
import com.sun.jna.platform.win32.GDI32Util;
import com.sun.jna.platform.win32.WinDef.HWND;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
public class Main {
public static void main(String[] args) {
try {
//Get JNA User32 Instace
com.sun.jna.platform.win32.User32 user32 = com.sun.jna.platform.win32.User32.INSTANCE;
//Get desktop windows handler
HWND hwnd = user32.GetDesktopWindow();
//Create a BufferedImage
BufferedImage bi;
//Function that take screenshot and set to BufferedImage bi
bi = GDI32Util.getScreenshot(hwnd);
//Save screenshot to a file
ImageIO.write(bi, "png", new java.io.File("screenshot.png"));
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}