ImageView:动画gif预览

ImageView: animated gif preview

我正在整理一个显示图片预览的图片库。对于大多数图像,这没有问题,只有当图像是动画 gif 时,图像也是动画的,在这种情况下是没有必要的。 我想为动画 gif 做的是只显示动画的一帧。

在寻找解决方案时,我遇到了

GifDecoder d = new GifDecoder();
d.read( filename);
WritableImage wimg = null;
Image img = SwingFXUtils.toFXImage(d.getFrame(0), wimg);

但首先,这似乎开销太大,到目前为止,由于 d.getFrame(0) returns null 的事实,快速测试以 NullPointerException 结束.

我在想一定有更简单的方法,比如 Image 上的一些 属性 来避免对图像进行动画处理,或者作为不在 [=15 中显示图像的替代方法=].

GifDecoder 不起作用的原因有两个。

第一个确实是我的错误,因为传递给读取方法的字符串应该是一个 URI:

File f = new File(filename);
d.read(f.toURI().toString());

第二个问题在于 GifDecoder:为了检查输入 URI,它被转换为小写,然后使用转换后的字符串在 InputStream 中创建。这适用于不区分大小写的 OS(如 Windows),但不适用于基于 NIX 的系统。因此,我不得不修复它,现在它正在运行。