ループ再生されるGIF画像の作り方
下記が現在のソースです
package creategif;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.swing.JOptionPane;
/**
* メインクラスです.
* @author udon
*/
public class CreateGif {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
File file = new File(System.getProperty("user.dir") + File.separator + "anime.gif");
try {
//書き込みストリームの作成
Iterator<ImageWriter> it = ImageIO.getImageWritersByFormatName("gif");
ImageWriter writer = it.hasNext() ? it.next() : null;
ImageOutputStream stream = ImageIO.createImageOutputStream(file);
if(writer == null) {
throw new IOException();
}
writer.setOutput(stream);
writer.prepareWriteSequence(null);
//画像の作成
BufferedImage image = new BufferedImage(128, 128, BufferedImage.TYPE_INT_RGB);
Rectangle rect = new Rectangle(16, 16, 8, 8);
final Color FG = Color.WHITE;
final Color BG = Color.BLACK;
//50回□を動かすアニメーション
for(int i=0; i<50; i++) {
Graphics g = image.createGraphics();
//背景を塗りつぶす
g.setColor(BG);
g.fillRect(0, 0, 128, 128);
//□を描画
g.setColor(FG);
g.fillRect(rect.x, rect.y, rect.width, rect.height);
//動かす
rect.x += 2;
//フレームの追加
writer.writeToSequence(new IIOImage(image, null, null), null);
}
writer.endWriteSequence();
stream.close();
} catch(IOException ioe) {
JOptionPane.showMessageDialog(null, "失敗しました\n" + ioe.getMessage());
}
}
}
また、下記の環境でアニメーション再生されることも確認済みです
Chrome 48.0.2564.116 m
IE 11.0.9600.18205
ただこれはアニメーションを一通り再生するとそのまま停止してしまうのですが、
これを無限にループ再生させる方法はありますか?