将Flash(SWF)帧渲染为图像(PDF,PNG,JPG)

时间:2010-06-07 10:49:27

标签: command-line flash

我想编写一个python脚本,它接受一堆swf文件并将它们呈现给单个图像文件。

每个swf文件只有一个帧(文本,图片等),根本没有动画。我已经尝试过swftools工具集(Windows版本)的渲染命令,但结果图像的分辨率太低了。

所以我需要的是:

命令行工具(Windows / Linux)或python库,它将swf中的一个帧渲染为位图,或者更好地渲染为类似PDF的内容(如果可以保留文本数据,那将会很酷)。如果可以手动设置目标分辨率/大小,那就太好了。

提前致谢!

3 个答案:

答案 0 :(得分:11)

我很抱歉回答我自己的问题,但我通过浏览来源找到了swfrender(swftools的一部分)的无证功能。

swfrender path/to/my.swf -X<width of output> -Y<height of output>
-o<filename of output png>

正如您可能已经猜到的那样,X选项可以让您确定输出的宽度(以像素为单位),Y对于高度也是如此。如果您只设置一个参数,则选择另一个参数与原始高度 - 宽度比相关(非常有用)

这对我有用,但是随着Zarate提供了一个可能更好的解决方案(我正在考虑swf到PDF转换),他应该获得学分。

干杯

答案 1 :(得分:5)

有时,SWFRender卡在非常重的文件中,特别是在生成300dpi +图像时。在这种情况下,Gnash可以提供帮助:

gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf

这里我们将电影的最后一帧转储到文件output.png,禁用声音处理并在渲染帧后退出。我们也可以在这里指定比例因子或使用

-j width -k height

指定生成图像的确切大小。

答案 2 :(得分:3)

例如,您可以构建一个加载每个SWF的AIR应用程序,获取屏幕截图并将其写入文件。

问题是你需要开始做渲染的事情,据我所知,如果没有播放器或其部分开源实现,你就无法做到这一点。

我认为最好的选择是AIR,the SDK是免费且跨平台的。如果你习惯了python,那么必要的AS3应该很容易拿起来。

HTH,

Ĵ