gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 02:08:58 28 4
gpt4 key购买 nike

您好,我正在使用 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 及更低版本,没有此类功能。

Headless 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?

  • 关于不显示应用程序或场景的 javafx 快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730227/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com