使用算法制作动画GIF的最佳方法是什么?

Dou*_*rel 5 algorithm gif movie

我有一个骑在各种尺寸(大尺寸,如100x100)的棋盘上骑行的算法,我想为结果制作动画.每当骑士移动到一个新的方块时,(方形)画布中的相应像素将改变颜色,直到最终整个画布被着色.所得到的电影将可在网页上查看有关该算法的内容.

如果我想要广泛的浏览器支持,动画GIF似乎是最好的方法(尽管欢迎其他建议).使用它的最佳工具或库是什么?我很高兴使用Linux或Mac电脑上免费提供的任何东西.

实际的算法太长了,无法在这里做一个有用的例子(如果你真的好奇的话,请参阅本文),但这是一个8x8板上(无聊)国王之旅的伪代码:

movie = new Movie()
frame = new Frame()
frame.fillRectangle((1,1), 8, 8, BLUE)
for row in [1..8] {
    if (row.isOdd()) { colrange = [1..8] } else { colrange = [8..1] }
    for col in colrange {
        frame.colourPixel(row, col, RED)
        movie.addFrame(frame)
    }
}
movie.saveAsGIF("tour.gif")
Run Code Online (Sandbox Code Playgroud)

额外信用问题:我们可以利用这部电影的特殊功能来减小文件大小吗?在维基百科的文章表明,我们也许能够做到这一点,如果我们只是改变一些像素-事实上,我们只更改每帧的一个!

Naa*_*aff 5

您可以使用giflib完成此操作。文档在下载中。

例如,此页面包含使用giflib创建的动画gif和用于生成动画的程序的源代码。了解如何将giflib用于动画可能会有所帮助。

编辑:如果您不介意进行一些后期处理,另一种选择是简单地使用简单格式(例如PPM)输出帧,然后使用ImageMagick制作动画gif

至于您的额外信誉问题:ImageMagick甚至可以为您进行帧比较以减小输出的大小。