我已经尝试了很多但是,我能得到的只是第一张图片而不是GIF动画。
目前最好的解决方案是将动画gif加载到图标中,但我需要该文件。代码如下:
final URL url = new URL("http://www.freeallimages.com/wp-content/uploads/2014/09/animated-gif-images-2.gif");
JLabel l = new JLabel(new ImageIcon(url));
JOptionPane.showMessageDialog(null, l);
有人可以帮忙吗?
此代码只获得gif(非动画)的第一张图片:
public static void saveImage(String imageUrl, String destinationFile) throws IOException {
URL url = new URL(imageUrl);
InputStream is = url.openStream();
File file = new File(destinationFile);
file.getParentFile().mkdirs();
file.createNewFile();
OutputStream os = new FileOutputStream(destinationFile );
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
}
答案 0 :(得分:0)
就代码而言,它很好并且GIF应该正确下载。(比较原始和下载的GIF的大小以确认)。现在有两点:
1. Windows Photo Viewer无法显示动画GiF,使用Internet Explorer代替它
2.在java中不要使用Event-Dispatcher线程来显示任何动画GIF,它肯定不会动画。尝试使用另一个线程显示包含动画GIF的任何帧。
从代码中可以清楚地看到,在使用动画GIF初始化JLabel之后,您已经从JOptionPane初始化了一个对话框,请不要这样做。 JOptionPane中的所有对话框都是模态的,它将阻止当前的线程执行,因此您将看不到任何动画。