首页 > 解决方案 > 如何将动画保存为文件(Robert Sedgewick 和 Kevin Wayne 的“算法第 4 版”。)

问题描述

我正在阅读 Robert Sedgewick 和 Kevin Wayne 的“算法第 4 版”。
使用StdDraw,我们可以创建动画:

package general_test;

import edu.princeton.cs.algs4.StdDraw;

public class AnimationTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
       StdDraw.setScale(-2, +2);
       StdDraw.enableDoubleBuffering();

       for (double t = 0.0; true; t += 0.02) {
           double x = Math.sin(t);
           double y = Math.cos(t);
           StdDraw.clear();
           StdDraw.filledCircle(x, y, 0.05);
           StdDraw.filledCircle(-x, -y, 0.05);
           StdDraw.show();
           StdDraw.pause(20);
       }
    }

}

我想将此动画保存为文件。
如何将此动画保存为文件?
有什么简单的方法吗?

标签: javaanimationsave

解决方案


非常简单的方法

  1. 添加计数器。
int counter = 0;
  1. 将迭代步数限制为 1000。
for (double t = 0.0; t < 20; t += 0.02)
  1. 将每个迭代步骤保存为 PNG 文件。
StdDraw.save("image-"+String.format("%03d", counter++)+".png");
  1. 使用 ffmpeg 将这些文件转换为视频文件。
ffmpeg -i image-%03d.png video.webm

享受!

参考


推荐阅读