加载到JavaFX WebView组件中的完整网页的屏幕截图,不仅是可见部分

时间:2014-10-17 21:50:42

标签: java javafx javafx-2 screenshot javafx-8

经过两年的管理工作,我写了第一行代码。没有时间阅读大量文档,需要在几分钟内创建一个概念验证。 所以我必须使用JavaFX并且需要提供允许将加载到WebView组件中的网页截图的功能。问题是我需要整页的屏幕截图,而不仅仅是适合当前应用程序窗口大小的那个。这是我使用的简单代码:

    WritableImage image = browser.snapshot(new SnapshotParameters(), null); 
    // browser is javafx.scene.web.WebView
    File file = new File("screenshot_fx.png");
    try {
        ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file);
    } catch (IOException e) {
        e.printStackTrace();
    }

它基本上只捕获我在屏幕上看到的内容。如果网页需要滚动 - 我将不会在屏幕截图上显示不可见的部分。请建议如何进行。

1 个答案:

答案 0 :(得分:-1)

        try {
            Robot pixelGrabber = new Robot();
            BufferedImage bi = pixelGrabber
                    .createScreenCapture(new Rectangle(x, y, width, height));


            Image screen = SwingFXUtils.toFXImage(bi,
                    new WritableImage(bi.getWidth(), bi.getHeight()));

        } catch (AWTException ex) {
            ex.printStackTrace();
        }

这将创建一个从像素x * y开始的屏幕截图,其中所需的高度和宽度与应用程序窗口的当前大小无关。如果您使用的是JavaFX,只需使用SwingFXUtils将awt-image转换为JavaFX映像。