如何创建只播放一次的 gif 动画

How to create a gif animation that plays only once

我正在尝试生成只播放一次帧的动画 gif。

当我将 LoopCount 设置为 1 时,它会播放帧两次。当我将 LoopCount 设置为 0 或 -1 时,它会无限循环。

img := image.(*image.Paletted)

outGif := &gif.GIF{}
outGif.LoopCount = 0
outGif.Image = append(outGif.Image, img)
outGif.Delay = append(outGif.Delay, 10)

f, err := os.Create("/tmp/test.gif")
if err != nil {
    panic(err)
}
defer f.Close()

gif.EncodeAll(f, outGif)

如何确保它只播放一次帧?

浏览器对循环计数器的解释不同。对于单循环 gif,Chrome 循环两次,而 Firefox 只播放一次动画。

见本期 GifCreator - Unable to create non loop GIF image