如何使用Java从URL下载动画gif?

时间:2014-09-13 08:34:38

标签: java image url animated

我已经尝试了很多但是,我能得到的只是第一张图片而不是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();
}

1 个答案:

答案 0 :(得分:0)

就代码而言,它很好并且GIF应该正确下载。(比较原始和下载的GIF的大小以确认)。现在有两点:

1. Windows Photo Viewer无法显示动画GiF,使用Internet Explorer代替它 2.在java中不要使用Event-Dispatcher线程来显示任何动画GIF,它肯定不会动画。尝试使用另一个线程显示包含动画GIF的任何帧。

从代码中可以清楚地看到,在使用动画GIF初始化JLabel之后,您已经从JOptionPane初始化了一个对话框,请不要这样做。 JOptionPane中的所有对话框都是模态的,它将阻止当前的线程执行,因此您将看不到任何动画。