不显示应用程序或场景的javafx快照



嗨,我正在使用JavaFx WebView来创建HTML页面的截图,它工作得很好,但我想知道是否可以在不启动图形Windows应用程序的情况下做到这一点!!我的意思是,难道没有比这更轻量级的方法来获取截图了吗:

public class WebViewSample extends Application {
    private Scene scene;
    @Override
    public void start(Stage stage) {
        // create scene
        scene = new Scene(new Browser(snapshot), 750, 500, Color.web("#666970"));
        stage.setScene(scene);
//        show stage
        stage.show();
    }
    WritableImage snapshot;
    public static void main(String[] args) {
        launch(args);
        System.err.println("launched!");
    }
}
class Browser extends Region {

    final ImageView selectedImage = new ImageView();
    final WebView browser = new WebView();
    final WebEngine webEngine = browser.getEngine();
    private final  WritableImage snapshotImage;
    public Browser(WritableImage snapshot) {
        this.snapshotImage= snapshot;
        // process page loading
        webEngine.getLoadWorker().stateProperty().addListener(
                new ChangeListener<State>() {
                    @Override
                    public void changed(ObservableValue<? extends State> ov,
                                        State oldState, State newState) {
                        if (newState == State.SUCCEEDED) {
                            WritableImage newSnapshot = browser.snapshot(null, snapshotImage);
                            File file = new File("test2.png");
                            RenderedImage renderedImage = SwingFXUtils.fromFXImage(newSnapshot, null);
                            try {
                                ImageIO.write(renderedImage, "png", file);
                            } catch (IOException e1) {
                                e1.printStackTrace();
                            }
                            System.exit(0);
                        }
                    }
                }
        );
        // load the home page        
        webEngine.load("http://localhost/");

        //add components
        getChildren().add(browser);
    }

}  

对于JavaFX 2.2及以下版本,没有这种功能。

无头JavaFX应用程序目前是不可能的,一个主JavaFX线程是强制性的。

你能做的最好的事情就是阅读一些实现这一目标的变通方法。

相关StackOverflow问题:

  • JavaFX用于服务器端图像生成在服务器端使用Java FX生成图像
  • JavaFx在headless模式
  • 如何在headless环境中测试JavaFX 2 ?
  • 相关内容

    • 没有找到相关文章

    最新更新