2022-11-16 16:05

Java生成GIF动图

码自答

JavaEE

(613)

(0)

收藏

  • 下载库

    下载animated-gif-lib库

  • AnimatedGifEncoder类

    • setSize()方法,设置生成的gif图的尺寸

    • start()方法,生成gif文件

    • setDelay()图片之间的时间间隔,时间毫秒数为单位

    • setRepeat()设置重复的次数,0表示无限次

  • 代码如下:


package com.wanmait.demo;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

import com.madgag.gif.fmsware.AnimatedGifEncoder;

public class CreateGif {
	
	private List<BufferedImage> imageList = new ArrayList<>();
	//创建数组
	
	//打开图片   filepath文件目录
	public void open(String filepath)
	{
		File directory = new File(filepath);
		File[] files = directory.listFiles();
		//filepath目录下的所有的文件
		try
		{
			for(File file:files) {
				BufferedImage image = ImageIO.read(file);
				//打开图片文件
				imageList.add(image);
				//添加到数组
			}
		}
		catch(IOException ex)
		{
			ex.printStackTrace();
		}
	}
	
	//创建gif文件
	public void create(String gifPath)
	{
		try
		{
			AnimatedGifEncoder encoder = new AnimatedGifEncoder();
			//设置生成的图片大小
			encoder.setSize(800, 800);
			//设置生成图片的路径  gif图片路径
			encoder.start(new FileOutputStream(gifPath));
			//设置图片与图片的间隔时间  毫秒数
			encoder.setDelay(500);
			//设置重复次数
			encoder.setRepeat(0); 
			//0无限次
			
			//添加图片
			for(BufferedImage image:imageList)
			{
				encoder.addFrame(image);
			}
			
			encoder.finish();
		}
		catch(FileNotFoundException ex)
		{
			ex.printStackTrace();
		}
		
	}
}	


测试代码:

package com.wanmait.demo;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		CreateGif createGif = new CreateGif();
		createGif.open("d:/images/");
		createGif.create("d:/data/1.gif");
	}

}


程序运行在d:/data文件夹下生成gif文件

0条评论

点击登录参与评论