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 的系统。因此,我不得不修复它,现在它正在运行。
我正在整理一个显示图片预览的图片库。对于大多数图像,这没有问题,只有当图像是动画 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 的系统。因此,我不得不修复它,现在它正在运行。