1
私はその場所を見渡しましたが、理解しやすい説明が見つからないようです。 (私はこれを行うことができる他のJavaユーザによって書かれたクラスとメソッドを見つけましたが、自分で書くことを望んでいます)ImageWriterとImageIOを使用して、アニメーションGIFをJavaでエンコードする方法は?
私はその場所を見渡しましたが、理解しやすい説明が見つからないようです。 (私はこれを行うことができる他のJavaユーザによって書かれたクラスとメソッドを見つけましたが、自分で書くことを望んでいます)ImageWriterとImageIOを使用して、アニメーションGIFをJavaでエンコードする方法は?
GIFanimの方法はここにあります。おそらくそれはあなたにスタートを与えるでしょう。これはカラーパレットを圧縮し、他の最適化を行うライブラリを用いて行うことができるよりも著しく大きい画像を生成する非常に単純な実装であること
public byte[] createImage() throws Exception {
ImageWriter iw = ImageIO.getImageWritersByFormatName("gif").next();
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
iw.setOutput(ios);
iw.prepareWriteSequence(null);
int i = 0;
for (AnimationFrame animationFrame : frameCollection) {
BufferedImage src = animationFrame.getImage();
ImageWriteParam iwp = iw.getDefaultWriteParam();
IIOMetadata metadata = iw.getDefaultImageMetadata(
new ImageTypeSpecifier(src), iwp);
configure(metadata, "" + animationFrame.getDelay(), i);
IIOImage ii = new IIOImage(src, null, metadata);
iw.writeToSequence(ii, null);
i++;
}
iw.endWriteSequence();
ios.close();
return os.toByteArray();
}
注意。このようなライブラリを実装することは重要な作業です。
これは、コードライブラリではなくエンドユーザーアプリケーションであったWebサイトで、これを取得したライブラリが見つかりませんでした。これはコードベースのコピーを持っていますか? – neilf
@neilfあなたはそれを終えましたか? –