22
有没有人设法说服ImageIO编写GIF动画,特别是设置正确的元数据?我第一次尝试大致如下(其中B1和B2 BufferedImages):使用ImageIO创建GIF动画?
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给出了一些错误加载文件时的消息,尽管将图像嵌入到Firefox的测试网页中确实会显示该文件o图像非常快速连续,这是tantilisingly接近我想要的...
如果有人已经写ImageIF的动画GIF工作,并可以共享工作代码片段或如何解决上述问题, 这将不胜感激!
main()函数提供的示例中存在错误。评论说: `//一个GIF序列,第一个图像的类型,1秒之间的帧,它连续循环,这将是`新的GifSequenceWriter(输出,firstImage.getType(),1000,真)`而不是`new GifSequenceWriter(output,firstImage.getType(),1,false)` – gvlasov 2013-08-14 07:44:28