我有一个加载spritesheet的程序,在工作表上创建每个帧的BufferedImages,并将其写入动画gif。使用Elliot Kroo在Creating animated GIF with ImageIO?上提供的课程,我能够成功输出文件。但是,gif没有正确的动画效果。我提供的图纸是一个带有透明背景的.png,因此每个后续帧都放在最后一帧的顶部,透过背景显示差异(Example)。这是使用gif writer的代码:
ImageOutputStream output = new FileImageOutputStream(new File(savePath));
GifSequenceWriter writer = new GifSequenceWriter(output, data[0].getType(), delay, true);
for(BufferedImage bi:data)
{
writer.writeToSequence(bi);
}
writer.close();
output.close();
其中data是每个帧的数组,作为BufferedImage(我也检查过,似乎没有问题)。这是.gifs或Java ImageWriters的限制吗?或者我可以在某处编辑设置以防止这种情况发生吗?如果我不需要,我宁愿不提供背景。
答案 0 :(得分:2)
假设data
是一个BufferedImage
数组,GifSequenceWriter
构造函数的imageType
参数可能是TYPE_INT_ARGB
,用于从{{1}读取的数据文件。我希望.png
为transparentColorFlag
,但您必须凭经验确定true
。
transparentColorIndex
另见answer。