【问题标题】:How to capture only a desired portion of screen using createScreenCapture如何使用 createScreenCapture 仅捕获所需的屏幕部分
【发布时间】:2014-07-02 19:59:33
【问题描述】:

以下代码捕获屏幕:

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;


public class capture{
    public static void main(String args[]) { 

        try { 
            Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); 
            Robot robot = new Robot(); 
            BufferedImage img = robot.createScreenCapture(new Rectangle(size)); 
        } catch(Exception e) { 
        } 

    }
}

有没有办法只捕获屏幕的所需部分(例如,一个矩形,从一个 x,y 点到另一个)?

【问题讨论】:

    标签: java screen awtrobot


    【解决方案1】:

    您可以设置左上角的xy,以及矩形的宽度和高度尺寸,如下所示:

    BufferedImage img = robot.createScreenCapture( new Rectangle(x, y, width, height) );
    

    【讨论】:

    • 我试过.createScreenCapture(300, 300, 200, 200),但它返回错误:不能应用于给定类型...
    • 对不起。刚刚检查了docs 以查看createScreenCapture 采用Rectangle 对象。编辑了我的答案。现在应该可以工作了。
    【解决方案2】:
    import java.awt.AWTException;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    /**
     * This program demonstrates how to capture screenshot of a portion of screen.
     * 
     *
     */
    public class TaskBarCaptureImage {
    
        public static void main(String[] args) {
            try {
                Robot robot = new Robot();
                String format = "jpg";
                String fileName = "TaskBar Captured." + format;
    
                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
                System.out.println("ScreenSize : " + screenSize);
                Rectangle captureRect = new Rectangle(0, 728, 1366, 40); // taskbar
                                                                            // zone
    
                BufferedImage screenFullImage = robot.createScreenCapture(captureRect);
                ImageIO.write(screenFullImage, format, new File(fileName));
                int no = 1;
                ImageIO.write(screenFullImage, format, new File("./imagenes/" + no + ".png"));
    
    
                System.out.println("TaskBar Captured!");
            } catch (AWTException | IOException ex) {
                System.err.println(ex);
            }
        }
    
    }
    

    【讨论】:

    • 检查这个。您可以设置 x y 和大小。
    • 在答案中提供代码时,解释它为什么或如何工作总是有帮助的。
    猜你喜欢
    • 2016-02-13
    • 1970-01-01
    • 2011-12-16
    • 2020-10-28
    • 1970-01-01
    • 2012-05-24
    • 2018-07-04
    • 2016-03-28
    • 1970-01-01
    相关资源
    最近更新 更多