问题
I'm writing my first lines of code after 2 years of managerial work. No time to read a lot of docs, need to create a proof-of-concept just in minutes. So I have to work with JavaFX and need to provide functionality that allows to take a screenshot of web-page loaded into WebView component. The issue is that I need a screenshot of the full page, not only that piece that fits into current size of application window. Here is a simple code I use:
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();
}
And it basically captures only what I see on the screen. If web-page requires scrolling -- I will not have not-visible part on the screenshot. Please suggest how to proceed.
回答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();
}
This creates a screenshot starting on pixel x*y with your needed height and width independent of the current size of your application window. If your are using JavaFX, just use SwingFXUtils to transform the awt-image to a JavaFX-image.
来源:https://stackoverflow.com/questions/26433919/screenshot-of-the-full-web-page-loaded-into-javafx-webview-component-not-only-v