用ImageIO创buildanimationGIF?

有没有人设法说服ImageIO写一个animationGIF,特别是设置正确的元数据? 我的第一次尝试大致如下(其中b1和b2是BufferedImages):

ImageTypeSpecifier spec = new ImageTypeSpecifier(b1); ImageWriter wr = ImageIO.getImageWriters(spec, "GIF").next(); wr.setOutput(ImageIO.createImageOutputStream(new File("C:\\Flashing.gif"))); ImageWriteParam param = wr.getDefaultWriteParam(); IIOMetadata meta = wr.getDefaultImageMetadata(spec, param); wr.prepareWriteSequence(meta); wr.writeToSequence(new IIOImage(b1, null, null), param); wr.writeToSequence(new IIOImage(b2, null, null), param); 

这似乎几乎工作,但是:

  • 我显然需要以某种方式设置“适当的”元数据来设置图像之间的时间,并理想地使它们循环(我天真地希望默认会做一些明智的,但嘿…)
  • 无论默认情况下写入的元数据显然都不是很正确:在加载文件时,GIMP会给出一些错误消息,尽pipe将图像embedded到Firefox的testing网页中可以非常快速地连续显示这两个图像,接近我想要的…

如果有人从ImageIO写GIFanimation来工作,并可以共享一段代码或如何解决上述问题,将不胜感激!

我碰到这个问题,决定尝试一下。 它花了一个小的,但不平凡的数额创build一个可用的类(谢谢斧 ) – 所以我想我可能会分享代码: 这是一个小类从一些其他图像创build一个animationgif图像。