我在JavaFx应用程序中有多个插入图像的位置(png / gif)。通常,只有一个例外。我的工作:
我这样加载它们:
ImageView openView =新的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)
答案 0 :(得分:0)
我设法通过使用另一个gif编辑工具使其工作。所以问题是转换。即使最初的gif看起来不错,在引擎盖下它也会使JavaFx崩溃。 (这里不会共享有效和无效工具的名称,因为它可能违反了堆栈溢出策略。)