经过两年的管理工作,我正在编写我的第一行代码。没有时间阅读大量文档,需要在几分钟内创建概念验证。所以我必须使用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();
}
它基本上只捕捉我在屏幕上看到的东西。如果网页需要滚动-我不会有不可见的部分截图。请建议如何进行。
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-image。