【问题标题】:Java Full ScreenshotJava 全屏截图
【发布时间】:2023-03-18 07:14:01
【问题描述】:

我想在程序的 JFrame 上显示我屏幕的完整屏幕截图。 到目前为止,使用下面的代码,我只能显示部分屏幕。 下面的代码是油漆的内容(图形g)。 如何让它全屏显示?

// the screen resolution is 1280 x 1024 while the JPanel size is only 1024 x 768
Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle rectangle = new Rectangle(resolution);
robot = new Robot();
BufferedImage bufferedImage = robot.createScreenCapture(rectangle);                                
g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null);

【问题讨论】:

标签: java awtrobot


【解决方案1】:

也许使用这样的东西:

//get the screen size
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage image = robot.createScreenCapture (dim);
//other code
//...

我看到你有一些错误,我不知道你的代码是否编译,因为引用似乎没有被声明,但类似于这个的代码会捕获你桌面的屏幕截图:

import java.awt.geom.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;

public class ScreenCapturer
{
    public static void main(String[] args)throws Exception
    {
        Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize();
        Rectangle rectangle = new Rectangle(resolution);
        Robot robot = new Robot();
        BufferedImage bufferedImage = robot.createScreenCapture(rectangle);
        Graphics g = bufferedImage.getGraphics();
        //g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null);
        File out = new File("image.png");
        ImageIO.write(bufferedImage,"png",out);
    }
}

我保存为 png 图像文件,而不是在屏幕或框架上绘制它。

【讨论】:

    【解决方案2】:

    使用java.awt.Toolkit.getDefaultToolkit().getScreenSize()获取屏幕大小:http://www.roseindia.net/java/java-get-example/screen-dimensions.shtml

    【讨论】:

    • 我已经更新了代码。我已经放置了旧代码,已经更新了它们。
    【解决方案3】:
    g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null);
    

    通过每行仅使用一个语句来简化您的代码,然后您可能能够理解代码。

    为什么要使用图像的宽度和高度?如果您指定图像的全尺寸,那将如何缩放图像?我猜你想要:

    Image scaled = bufferedImage.getScaledInstance(1024, 768, Image.SCALE_DEFAULT);
    

    现在您可以将图像添加到 JLabel 中,而不是进行自定义绘画:

    ImageIcon icon = new ImageIcon( scaled );
    JLabel label = new JLabel( icon );
    frame.add( label );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多