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.
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.