How to| 导入与导出动画
在 Wolfram 语言中创建或编辑了一个动画后, 您可以将其导出用于其它程序. Wolfram 语言能够以多种格式导入与导出动画.
This page requires that JavaScript be enabled in your browser.
Learn how »
在 Wolfram 语言参考资料中心 ExampleData 目录下的 QuickTime 文件中查看 Import 的可用元素:
Import["ExampleData/clip.mov", "Elements"]Import["ExampleData/clip.mov", "Animation"]用 Length 查看动画总帧数:
Import["ExampleData/clip.mov", "Frames"]//LengthImport["ExampleData/clip.mov", {"Frames", 1}]使用 {"Frames",All} 将所有帧导入为一个列表. 用 "GraphicsList" 代替 {"Frames",All},也可完成同一任务:
g1 = Import["ExampleData/clip.mov", {"Frames", All}];将 Scaled 与 ImageResize 联用,使各帧的尺寸成为原始尺寸的一半:
g2 = ImageResize[#, Scaled[1 / 2]]& /@ g1;用 Sharpen 将各帧锐化:
g3 = Sharpen /@ g2;用 ListAnimate 将处理后的各帧制成新的动画:
ListAnimate[g3]将得到的新动画导出为 SWF 格式,这是一种基于 Flash 的格式. 符号 % 指定的是最近的输出,在这里就是这个动画:
Export["walter1.swf", %]如果打开导出的动画,您将看到它的顶端包含无功能的控件. 该动画实际上是一个动画的动画. 如要将这些控件从导出的动画去除,只需将帧列表直接导出为动画所支持的一种文件格式.
Export["walter2.swf", g3]您也可以将 Wolfram 语言中创建的动画进行导入与导出.
首先,使用 Table 创建
分别在
的5幅图形:
plots = Table[Plot[Sin[a + x], {x, 0, 10}], {a, 5}]使用 ListAnimate 将该图形列表制成动画:
ListAnimate[plots]如前所述,直接将帧列表(在这里为图形)导出为动画所支持的文件格式创建了各帧的动画::
Export["animate.avi", plots]Import["animate.avi", "Animation"]还可将 Manipulate 对象导出为动画.
将 Manipulate 与 Plot3D 联合使用创建
的一个三维交互图形,其中
的值从0到4变化:
m = Manipulate[Plot3D[Sin[x y + a], {x, 0, 6}, {y, 0, 6}], {a, 0, 4}]接下来的三步等价于将整个 Manipulate 对象及控件等导出为一个动画.
这里导出了最近的输出,即 Manipulate 对象:
Export["manipulate1.avi", %]Manipulate 也存入 m 中,因此导出 m 生成相同的结果:
Export["manipulate2.avi", m]您也可以将 Manipulate 表达式置于 Export 表达式内:
Export["manipulate3.avi", Manipulate[Plot3D[Sin[x y + a], {x, 0, 6}, {y, 0, 6}], {a, 0, 4}]]动画 "manipulate1.avi"、"manipulate2.avi" 和 "manipulate3.avi" 是相同的. 同时它们含有Wolfram 语言中的 Manipulate 对象通常所有的组帧与控件.
如要导出的动画缺少组帧或控件,您需要生成一个图形列表,它表示的是用于 Manipulate 中的适当数目的步骤,然后将该列表导出为一种用于动画的文件格式.
例如,用 Table 创建
的一列图形,并指定
从0到4移动,步长为0.2:
plots2 = Table[Plot3D[Sin[x y + a], {x, 0, 6}, {y, 0, 6}], {a, 0, 4, 0.2}];将该图形列表导出至文件 "manipulate4.avi":
Export["manipulate4.avi", plots2]通过减小用于 Table 中的步长,可以创建更长、更平滑的动画. 例如,将步长由0.2减为0.1将使列表中的图形数目加倍,从而在导出为动画时它的帧数也成为原来的两倍.