簡體   English   中英

javafx快照沒有顯示應用程序或場景

[英]javafx snapshot without showing application or Scene

您好我正在使用JavaFx WebView創建HTML頁面的屏幕截圖,它工作正常但我想知道是否可以這樣做而無需在圖形窗口中啟動應用程序! 我的意思是沒有更多的輕量級方法來獲取截圖然后這個:

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處於無頭模式
  • 如何在無頭環境中測試JavaFX 2?

  • 暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM