【问题标题】:javafx snapshot without showing application or Scenejavafx 快照不显示应用程序或场景
【发布时间】:2014-03-29 11:03:09
【问题描述】:

您好,我正在使用 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);
    }



}  

【问题讨论】:

  • 嗨哈桑,你有没有找到解决这个问题的方法?我正在尝试同样的事情,但找不到解决方案。
  • @opeongo 实际上那是很久以前的事了,我记得问题确实以某种方式解决了。我不确定,但我想我用 headless chrome 解决了这个问题
  • 谢谢,很高兴知道。 Headless chrome 对我来说并不是一个真正的选择:(我希望在标准 java 中做到这一点。

标签: java javafx screenshot embedded-browser


【解决方案1】:

对于 JavaFX 2.2 及更低版本,没有这种功能。

目前无法使用无头 JavaFX 应用程序,并且 JavaFX 主线程是必需的。

您可以做的最好的事情是阅读实现此目的的几种解决方法。

StackOverflow 相关问题:

  • JavaFX for server-side image generation
  • Generating image at server side using Java FX
  • JavaFx in headless mode
  • How to test JavaFX 2 in a headless environment?
  • 【讨论】:

      猜你喜欢
      • 2020-04-11
      • 1970-01-01
      • 2014-01-09
      • 2021-06-19
      • 2022-07-19
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 2016-05-20
      相关资源
      最近更新 更多