有没有办法使用Java截取屏幕截图并将其保存到某种图像中?
2022-08-31 08:14:26
正如标题所说:你能只使用Java命令截取屏幕截图并保存它吗?或者,我是否需要使用特定于操作系统的程序来截取屏幕截图,然后将其从剪贴板上抓取?
正如标题所说:你能只使用Java命令截取屏幕截图并保存它吗?或者,我是否需要使用特定于操作系统的程序来截取屏幕截图,然后将其从剪贴板上抓取?
信不信由你,你实际上可以使用java.awt.Robot
来“创建一个包含从屏幕上读取的像素的图像”。然后,您可以将该映像写入磁盘上的文件。
我只是尝试了一下,整个事情最终是这样的:
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage capture = new Robot().createScreenCapture(screenRect);
ImageIO.write(capture, "bmp", new File(args[0]));
注:这将仅捕获主显示器。有关多显示器支持,请参阅图形配置。
我从不喜欢使用Robot,所以我制作了自己的简单方法来制作JFrame对象的屏幕截图:
public static final void makeScreenshot(JFrame argFrame) {
Rectangle rec = argFrame.getBounds();
BufferedImage bufferedImage = new BufferedImage(rec.width, rec.height, BufferedImage.TYPE_INT_ARGB);
argFrame.paint(bufferedImage.getGraphics());
try {
// Create temp file
File temp = File.createTempFile("screenshot", ".png");
// Use the ImageIO API to write the bufferedImage to a temporary file
ImageIO.write(bufferedImage, "png", temp);
// Delete temp file when program exits
temp.deleteOnExit();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}