如何在 Java 中创建动画 gif?

Posted

技术标签:

【中文标题】如何在 Java 中创建动画 gif?【英文标题】:How can I create animated gif in Java? 【发布时间】:2011-07-18 00:15:33 【问题描述】:

我想从一组 BufferedImages 创建一个 gif 图像。我怎样才能做到这一点?纯 Java 中是否有这样的库(ImageMagick 不是一个选项)?我找到了 Gif4J 库,但它不是免版税的。

【问题讨论】:

试试这个gif encoder。 相关问题: - Creating Animated-gif with imageio 还有这个elliot.kroo.net/software/java/GifSequenceWriter 似乎运作良好。 This 链接和那里的 wiki 示例将满足您的需求。您也可以控制帧速率。它是纯 Java。您甚至可能不需要使用 imageio! ——dragon66 2014 年 9 月 19 日 19:47 和this 易于使用的独立AnimatedGIFWriter。 【参考方案1】:

我只是回答了一个类似的问题here,但我认为我的解决方案可以提供帮助。

'ImageIcon' 类允许您加载 gif 动画。我用'getResource()'加载图像。为此,我通常使用 URL 类来传递文件路径。正如名称 URL 所暗示的那样,在远程计算机中不需要该路径。

URL url = This.class.getResource(path);
Icon myImgIcon = new ImageIcon(url);
JLabel imageLbl = new JLabel(myImgIcon);
component.add(imageLbl, BorderLayout.CENTER);

path 将是类文件夹中 gif 的路径。

参考资料: http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html#getresource

【讨论】:

【参考方案2】:

有一个图像处理库,类似于 Picasso,它使用 Lifelogger 提到的相同的 AnimatedGifEncoder 类- Glide Docs, Glide

 AnimatedGifEncoder e = new AnimatedGifEncoder();
 e.start(outputFileName);
 e.setDelay(1000);   // 1 frame per sec
 e.addFrame(image1);
 e.addFrame(image2);
 e.finish();

【讨论】:

以上是关于如何在 Java 中创建动画 gif?的主要内容,如果未能解决你的问题,请参考以下文章

在delphi 2009 中创建一个gif 动画文件?

在 Cocoa 中创建动画 GIF - 定义帧类型

如何在 Android 中从 JPEG 创建动画 GIF(开发)

使用 .png 文件在 R 中创建动画 (.gif)

如何创建动画 GIF

如何从一堆jpgs创建gif动画