【发布时间】:2010-10-31 03:13:32
【问题描述】:
我有一个用于在各种尺寸(大尺寸,如 100x100)的棋盘上进行骑士旅行的算法,我想为结果制作动画。每次马移动到一个新的方格时,(方格)画布中的相应像素都会改变颜色,直到最终整个画布都被着色。生成的电影将可在有关算法的网页上观看。
如果我想要广泛的浏览器支持,动画 GIF 似乎是最好的方法(尽管欢迎其他建议)。最好的工具或库是什么?我很乐意使用 Linux 或 Mac 计算机上免费提供的任何东西。
实际的算法太长,无法在此处提供有用的示例(如果您真的很好奇,请参阅this paper),但这里是(无聊的)king's 在 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")
加分题:我们可以利用这部电影的特殊功能来减小文件大小吗? Wikipedia article 表明我们可以做到这一点,如果我们只改变一些像素 - 事实上我们每帧只改变一个!
【问题讨论】:
-
不要使用动画 GIF。转成电影格式,压缩率会高很多
-
你建议什么格式,用什么工具来创建它?
-
压缩级别取决于很多事情。对于简单的图像,gif 就可以了。此外,尺寸可能不像简单性那么重要。动画 gif 不是很棒的技术,但它们得到了很好的支持。