0

我想在java中拍摄桌面屏幕的快照。我怎样才能做到这一点。

这类似于按打印屏幕并在 ms-paint 中粘贴数据,然后将文件保存为 .png 或 .jpg 格式。

4

5 回答 5

4

像这样:

Robot r = new Robot();
Toolkit t = Toolkit.getDefaultToolkit();
Dimension d = t.getScreenSize();
Image i = r.createScreenCapture(new Rectangle(0,0,d.width,d.height));
于 2013-08-02T11:12:43.817 回答
1

将以下代码复制并粘贴到您的 Java 类中,并以文件名作为参数调用方法 captureScreen()。屏幕截图将存储在您在参数中指定的文件中。

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;

...

public void captureScreen(String fileName) throws Exception {

   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
   Rectangle screenRectangle = new Rectangle(screenSize);
   Robot robot = new Robot();
   BufferedImage image = robot.createScreenCapture(screenRectangle);
   ImageIO.write(image, "png", new File(fileName));

}
...

在以下链接中解释

如何在 Java 中拍摄屏幕截图

于 2013-08-02T11:13:01.883 回答
1

获取您的屏幕详细信息 GraphicsEnvironment.getLocalGraphicsEnvironment();

GraphicsConfiguration cg // get your screen configuration from above
Rectangle rect = cg.getBounds();
final BufferedImage image;
image = new Robot().createScreenCapture(rect);
file = new File(yourFilePath);
String extension = "png" // or any other image extension.
ImageIO.write(bufferedImage, extension, file);
于 2013-08-02T11:27:48.683 回答
0
Robot robot = new Robot();
String format = "jpg";
String fileName = "D://FullScreenshot." + format;
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage screenFullImage = robot.createScreenCapture(screenRect);
ImageIO.write(screenFullImage, format, new File(fileName));
于 2017-07-28T06:28:29.937 回答
0

尝试这个:

GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice screen = env.getDefaultScreenDevice();
robot = new Robot(screen);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage img = robot.createScreenCapture(new Rectangle(0,0,d.width,d.height));
于 2016-01-23T18:59:49.967 回答