用于截屏的 Java 程序

javaobject oriented programmingprogramming更新于 2024/11/3 23:40:17

Java AWT(抽象窗口工具包)是一个多功能包,包含创建用户界面和绘制图形图像所需的所有类。按钮和滚动条类实体在 AWT 术语中称为组件。Component 类是所有 AWT 组件的根。当用户与某些组件交互时,会触发事件。AWTEvent 类及其子类表示 AWT 组件能够触发的事件。在 AWTEvent 中,解释了 AWT 事件模型。

容器是一个组件,它还可以包含其他组件和容器。容器的另一种选择是布局管理器,它控制组件在容器内的视觉排列方式。AWT 包包含许多布局管理器类以及用于开发您自己的布局管理器的接口。查看 LayoutManager 和 Container 了解更多信息。

这些值保存为整数,因此每个组件对象都有最大大小和位置。平台还可能对最大大小和地理区域施加进一步的限制。平台确定精确的最大值。这些最大值无法更改,无论是在 Java 代码还是本机代码中。组件布局同样受到这些限制的约束。如果组件对象的限制超出平台限制,则无法有效地在容器对象内组织它们。任何对象在特定轴上的位置和大小共同确定了对象的极限。

算法

无需构建 GUI 即可捕获屏幕截图

  • 导入所有必要的 java 包。

  • 创建一个"Robot"对象来捕获屏幕截图。

  • 创建一个"Rectangle"对象来指定要捕获的屏幕尺寸。

  • 将屏幕捕获为"BufferedImage"对象。

  • 打印正在捕获的屏幕截图的消息。

通过构建 GUI 并保存到特定路径来捕获屏幕截图

  • 导入所有必要的库。

  • 创建一个"JFrame"对象来保存GUI 组件。

  • 创建一个"JButton"对象以单击并捕获屏幕截图。

  • 创建一个"JFileChooser"对象来保存"JButton",并将其添加到"JFrame"。

  • 将"ActionListener"添加到"JButton",当单击按钮时,它会捕获屏幕截图并将其保存到特定文件。

  • 使用"Robot"对象将屏幕捕获为"BufferImage"对象。

  • 显示"保存文件"对话框,以允许用户选择保存位置和文件名。

  • 使用"ImageIO.write()"方法将"BufferedImage"对象保存到所选文件。

  • 打印正在保存的屏幕截图的消息。

  • 指定'JFrame' 的尺寸和可见性。

方法

  • 无需构建 GUI 即可截取屏幕截图。

  • 通过构建 GUI 并保存到特定路径来截取屏幕截图。

无需创建 GUI 即可截取屏幕截图

示例

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

public class ScreenCapture {
   public static void main(String[] args) throws Exception {
    // 创建一个 Robot 对象来捕获屏幕
    Robot robot = new Robot();
    
    // 创建一个 Rectangle 对象来定义要捕获的屏幕区域
    Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
    
    // 使用 robot.createScreenCapture() 方法将屏幕捕获为 BufferedImage 对象
    BufferedImage image = robot.createScreenCapture(rectangle);
    
    // 使用 ImageIO.write() 方法将 BufferedImage 对象保存到文件
    File file = new File("screenshot.png");
    ImageIO.write(image, "png", file);
    
    // 打印一条消息,表明屏幕截图已保存
    System.out.println("屏幕截图已保存到 screenshot.png");
   }
}

输出

屏幕截图保存到 screenshot.png

Java.awt 和 Javax.imageIO 包用于捕获和保存屏幕快照。它首先创建一个 Robot 对象,然后尝试将屏幕捕获为 BufferedImage 对象。稍后创建的 Rectangle 对象中要捕获的屏幕部分被定义为完整屏幕,它是使用 Toolkit.getDefaultToolkit() 函数的 getScreenSize 收集的。

然后代码使用机器人将屏幕捕获为 BufferedImage 对象。名为 createScreenCapture(rectangle) 的函数。最新的屏幕截图将替换为此项。

在我们的流程中,按照该步骤,我们继续通过 ImageIO.write 保存缓冲图像的特定实例 - 具体使用其参数("png"和文件)。执行此操作需要使用两个不同的对象:第一个是我们的代表性缓冲图像,简称为"图像",而第二个是另一个简称为"文件",精确确定输出将保存在哪里。值得注意的是,在这种情况下,我们选择了 PNG 格式用于存储目的。

程序生成的最后一条消息表明屏幕截图已保存到文件 screenshot.png。

通过创建 GUI 并保存到特定路径来捕获屏幕截图

示例

import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ScreenshotCapture {
   public static void main(String[] args) {
    // 创建 JFrame 对象
    JFrame frame = new JFrame("Screenshot Capture");
    
    // 创建 JButton 对象
    JButton captureButton = new JButton("Capture");
    
    // 创建 JFileChooser 对象
    JFileChooser fileChooser = new JFileChooser();
    
    // 创建 JPanel 对象
    JPanel panel = new JPanel();
    
    // 将 JButton 和 JPanel 对象添加到 JFrame
    panel.add(captureButton);
    frame.add(panel, BorderLayout.CENTER);
    
    // 将 ActionListener 添加到 JButton 以捕获屏幕截图并将其保存到文件
    captureButton.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
            try {
                // 创建一个 Robot 对象来捕获屏幕
                Robot robot = new Robot();
                
                // 创建一个 Rectangle 对象来定义要捕获的屏幕区域
                Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
                
                // 使用 robot.createScreenCapture() 方法将屏幕捕获为 BufferedImage 对象
                BufferedImage image = robot.createScreenCapture(rectangle);
                
                // 显示保存文件对话框以允许用户选择保存位置和文件名
                int result = fileChooser.showSaveDialog(frame);
                if (result == JFileChooser.APPROVE_OPTION) {
                    // 获取选定的文件并使用 ImageIO.write() 方法将 BufferedImage 对象保存到其中
                    File file = fileChooser.getSelectedFile();
                    ImageIO.write(image, "png", file);
                    
                    // 打印一条消息,表明屏幕截图已保存
                    System.out.println("屏幕截图已保存到 " + file.getAbsolutePath());
               }
            } catch (AWTException ex) {
               ex.printStackTrace();
            } catch (Exception ex) {
               ex.printStackTrace();
            }
         }
      });

      // 设置 JFrame 的大小和可见性
      frame.setSize(new Dimension(300, 100));
      frame.setVisible(true);
   }
}

输出

为了记录屏幕、显示保存文件对话框和保存图片,该程序使用了 Java.awt、Javax.swing 和 Javax.imageio 包。它首先创建一个带有"Capture"标签的 JButton 对象和一个 JFrame 对象。此外,它还生成一个 JFileChooser 对象,让用户选择存储快照的位置和调用方式。

然后,程序将 JButton 和 JPanel 对象添加到 JFrame。此外,它还向 JButton 对象添加一个 ActionListener,这样每当按下按钮时,都会拍摄当前屏幕的快照并保存到文件中。为了将屏幕捕获为 BufferedImage 对象,ActionListener 首先生成一个 Robot 对象。然后使用返回 JFileChooser 的 fileChooser.showSaveDialog(frame) 函数显示保存文件对话框。如果用户选择文件并在对话框中单击"保存",则显示 APPROVE_OPTION。

当用户选择文件时,程序使用 fileChooser 获取所选文件。使用 ImageIO.write(image, "png", file) 函数和 getSelectedFile() 将 BufferedImage 对象保存到文件中。"png"参数指定图像的格式为 PNG。

屏幕截图已保存到 file 提供的文件路径,程序以 screen.getAbsolutePath() 上的通知结束。

结论

总之,使用 Robot 类捕获屏幕的 BufferedImage 对象并使用 ImageIO.write() 方法将图片保存到文件中,就可以在 Java 中截取屏幕截图。用户还可以利用使用 Swing 组件(例如 JFrame、JButton 和 JFileChooser)构建的 GUI 应用程序来选择保存位置和文件名。通过将 ActionListener 附加到 JButton,可以截取屏幕截图并将其保存到所选文件中。总体而言,Java 提供了一种简单且适应性强的方法来截取和保存屏幕截图,以供各种用途使用。


相关文章


有用资源