Я хотел бы сделать снимок с моего Hbox.У меня есть следующий код:
public void saveScreen(ActionEvent actionEvent) {
WritableImage image = ig.doScreen(content, context.getCurrentFamily().getName());
File file = new File("./GenTree" + Instant.now().toEpochMilli() + ".png");
try {
ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file);
} catch (IOException e) {
e.printStackTrace();
}
}
public WritableImage doScreen(Pane nodeContent, String text) {
this.title.setText(text);
content.getChildren().clear();
nodeContent.getChildren().forEach(child -> {
content.getChildren().add(new ImageView(child.snapshot(snapshotParameters, null)));
});
generateImagePane();
Scene scene = new Scene(imagePane);
return scene.snapshot(null);
}
Когда сгенерированное изображение маленькое (4kx4k p.ex), проблем нет, оно генерируется как исключенное.
Когда оно больше,У меня есть ошибка, подобная этой:
java.lang.RuntimeException: Requested texture dimensions (34966x957) require dimensions (0x957) that exceed maximum texture size (16384)
at com.sun.prism.es2.ES2RTTexture.create(ES2RTTexture.java:220)
(...)
Я применил решение проблемы с отключенным графическим ускорением:
-Dprism.order=sw
Это помогает, но не решило мою проблему.Теперь изображение генерируется, но когда его размер такой, как в этом примере: 39K, он усекается.В моем примере, в Hbox, который я хотел бы сохранить, есть 52 элемента.Каждый элемент содержит 4 маленьких изображения.
При создании снимка 39 - 41 из них видны правильно, но другие нет, есть белое поле, даже задний фон не отображается после 41-го элемента.
Как вы можете видеть из приведенного выше кода, я беру каждого потомка этого Hbox и делаю снимок.это потому, что когда я делал снимок со всего Hbox, я заметил, что в первых 10 объектах все маленькие картинки правильно отображаются.Но ближе к концу больше маленьких картинок не показывается (только один цветной фон).Последние элементы не показывают маленькие картинки вообще.
На консоли нет ошибок.Только при включенном Dprism verbose я вижу этот журнал:
Growing pool com.sun.prism.sw.SWTexturePool@754645c9 target to 147 837 360