Почему я получаю ArrayIndexOutOfBoundsException при создании imageView с JavaFX? - PullRequest
0 голосов
/ 03 марта 2019

В моем приложении JavaFx есть несколько мест, где я вставляю изображения (png / gif).Обычно это работает с одним исключением.Что я делаю:

  • Я помещаю изображения в определенный каталог в ресурсах.
  • Я загружаю их так:

    ImageView openView = new ImageView("/pics/logo.png");

Альтернатива, которая также работает:

InputStream resourceAsStream = classParameter.getResourceAsStream("/pics/logo.png");
Image image = new Image(resourceAsStream);
ImageView openView = new ImageView(image);

Проблема: существует один gif с белымфон.Когда я вставляю его в приложение, оно работает, но если я вставляю тот же gif после его преобразования (чтобы добавить прозрачность для фона), я получаю:

ObjectProperty [bean: javafx.scene.image.Image@2ac5919d, name: exception, value: java.lang.ArrayIndexOutOfBoundsException: 4096]

Если я открою его для просмотра, преобразованный gifотображается как и ожидалось.

Есть идеи, почему выбрасывается это исключение?

Трассировка стека:

java.lang.ArrayIndexOutOfBoundsException: 4096
    at com.sun.javafx.iio.gif.GIFImageLoader2$LZWDecoder.readString(GIFImageLoader2.java:388)
    at com.sun.javafx.iio.gif.GIFImageLoader2.decodeImage(GIFImageLoader2.java:148)
    at com.sun.javafx.iio.gif.GIFImageLoader2.load(GIFImageLoader2.java:209)
    at com.sun.javafx.iio.ImageStorage.loadAll(ImageStorage.java:368)
    at com.sun.javafx.iio.ImageStorage.loadAll(ImageStorage.java:328)
    at com.sun.javafx.tk.quantum.PrismImageLoader2.loadAll(PrismImageLoader2.java:119)
    at com.sun.javafx.tk.quantum.PrismImageLoader2.<init>(PrismImageLoader2.java:70)
    at com.sun.javafx.tk.quantum.QuantumToolkit.loadImage(QuantumToolkit.java:648)
    at javafx.scene.image.Image.loadImage(Image.java:1036)
    at javafx.scene.image.Image.initialize(Image.java:785)
    at javafx.scene.image.Image.<init>(Image.java:599)
    at javafx.scene.image.ImageView.<init>(ImageView.java:167)
    at helpers.Helpers.setImageView(Helpers.java:173)

1 Ответ

0 голосов
/ 03 марта 2019

Мне удалось заставить его работать с помощью другого инструмента редактирования GIF.Таким образом, проблема была преобразованием.Даже если первоначальный gif выглядел нормально, под капотом это приводило к краху JavaFx.(Здесь не будут приводиться названия инструментов, которые работают и которые не работают, поскольку это может противоречить политике stackoverflow).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...