Экспортировать панель размером более 39K в png файл - PullRequest
0 голосов
/ 20 сентября 2018

Я хотел бы сделать снимок с моего 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...