我正在整理一个显示图像预览的图库。对于大多数图像,这没有问题,只有当图像是动画gif时,图像也是动画的,在这种情况下不是必需的。 我想为动画gif做的只是显示一帧动画。
在搜索解决方案时,我遇到了this。
GifDecoder d = new GifDecoder();
d.read( filename);
WritableImage wimg = null;
Image img = SwingFXUtils.toFXImage(d.getFrame(0), wimg);
但首先,由于NullPointerException
返回d.getFrame(0)
这一事实导致开销过多,目前为止的快速测试结果为null
。
我认为必须有一种更简单的方法,例如Image
上的某些属性可以避免动画图像,或者作为不在ImageView
中显示图像的替代方法。
答案 0 :(得分:0)
GifDecoder
无效后有两个原因。
第一个是我的错误,因为传递给read方法的String应该是一个URI:
File f = new File(filename);
d.read(f.toURI().toString());
第二个问题在于GifDecoder
:要检查输入URI,它将转换为小写,然后使用转换后的String在InputStream
中创建。这适用于不区分大小写的操作系统(如Windows),但不适用于基于NIX的系统。因此,我必须解决这个问题,现在它正在发挥作用。