使用java捕获屏幕的指定区域

使用java捕获屏幕的指定区域,java,jsf-2,screenshot,Java,Jsf 2,Screenshot,我正在Java web应用程序中实现一个屏幕截图,该应用程序已经在运行。但是,我对截图有一个问题,因为图像是针对整个屏幕拍摄的: 正如你所看到的,这是整个屏幕,我只想用图形捕捉这个区域,白色区域。我用于捕获此屏幕的代码是: public void captureGraphs() { try { Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); Robot

我正在Java web应用程序中实现一个屏幕截图,该应用程序已经在运行。但是,我对截图有一个问题,因为图像是针对整个屏幕拍摄的:

正如你所看到的,这是整个屏幕,我只想用图形捕捉这个区域,白色区域。我用于捕获此屏幕的代码是:

public void captureGraphs() {

        try {
            Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
            Robot robot = new Robot();
            BufferedImage img = robot.createScreenCapture(new Rectangle(size));
            File f = new File("C:/capture");
            if (!f.exists()) {
                f.mkdir();
            }
            File[] flist = f.listFiles();
            for (File flist1 : flist) {
                flist1.delete();
            }
            ImageIO.write(img, "JPG", new File("C:/capture/screenShot.jpg"));
            System.out.println("Capture Successfull");
            FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO,
                            "Successful!",
                            "You have successfully taken a snapshot. Thank You"));
        } catch (HeadlessException e) {
            System.out.println(e.getMessage());
        } catch (AWTException e) {
            System.out.println(e.getMessage());
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

是否有任何方法可以更改此代码以捕获仅包含图形的中间部分???

我以前从未这样做过。但是我认为您可以查看您正在使用的API,看看它是否允许您设置捕获长度X宽度的区域。如果可能的话,您可以使用鼠标在要捕获的区域周围绘制一个矩形,并将l,b传递给您的代码。您还需要有鼠标事件侦听器。您正在捕获服务器屏幕吗??对象管理组织