我想用Python创建包含文本和简单移动几何对象(线条,矩形,圆形等)的动画(视频)。
在标题为“Python 2.6 Graphics Cookbook”的书中,我找到了使用Tkinter库的示例。首先,它看起来像我需要的。我能够创建简单的动画但后来我意识到最后我想要一个包含我的动画的文件(用gif或mp4格式)。但是,我所拥有的是一个在我的计算机上运行GUI的应用程序,并向我展示我的动画。
是否有一种简单的方法可以将我在GUI中看到的动画保存在文件中?
答案 0 :(得分:3)
没有简单的方法。
问题Programmatically generate video or animated GIF in Python?的答案与使用python创建这些文件有关(即:它没有提到tkinter)。
问题How can I convert canvas content to an image?有与将画布保存为图像相关的答案
您可以从这两个问题中获取最佳答案,并将它们合并为一个程序。
答案 1 :(得分:2)
我之前已经完成了这个,但不是特别漂亮。
Tl; dr在迭代的每一步将画布保存为图像,使用外部工具将图像转换为gif
除了已在您的计算机上安装了imagemagick之外,这不需要任何外部依赖项或新程序包
我假设您正在使用Tkinter画布对象。如果您要将实际图像发布到tk小部件,那么保存它们可能会容易得多;除了作为后记之外,tk画布没有内置的保存功能。 Postscript实际上可能适合制作动画,但除此之外你可以
在每一步都截取屏幕截图,也许使用imagegrab http://effbot.org/imagingbook/imagegrab.htm
保存图像后,我使用imagemagick将它们转换为gif或mpg。您可以使用How to run imagemagick in the background from python或类似的东西直接从python运行命令。这也意味着该进程必须在一个单独的线程上运行,因此它不会在程序发生时停止它。您可以查询文件以找出进程何时完成。
命令
convert ../location/*.ps -quality 100 ../location/animation.gif
应该这样做。
<强>怪癖:强>
有一些小细节,而且过程并不完美。 Imagemagick按顺序读取文件,因此您需要保存文件,以便按字母顺序和时间顺序排列。请注意名称
name9.ps
按字母顺序大于
name10.ps
从imagemagick的角度来看。
如果你没有imagemagick,你可以在linux和mac上轻松下载它(它是一个非常有用的命令行工具),而cygwin在windows上附带它。如果你担心便携性......那么...... PIL也不是标准的
答案 2 :(得分:0)
有一种方法可以使用&#34;录制屏幕方法&#34;,其他question: "how can you record your screen in a gif?"解释了这一点。
点击链接 - &gt; LICEcap : https://github.com/lepht/licecap
他们说它是Mac(OS X)和Windows
的免费软件答案 3 :(得分:0)
你可以看一下Panda3D,但可能会因为你需要而被杀死。
我会说你也可以使用Blender3d,但我不确定它是如何工作的。有人进行了更多实验,然后我可以告诉你更多相关信息。