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

7
我想编写一个Python脚本,将一堆swf文件渲染为单独的图像文件。
每个swf文件只有一个帧(文本、图片等),没有任何动画。我已经尝试过swftools工具集中的render命令(Windows版本),但生成的图像分辨率太低。
所以我需要:
一个命令行工具(Windows/Linux)或Python库,可以将swf中的一个帧渲染为位图或更好的PDF格式(如果能保留文本数据就更好了)。如果能手动设置目标分辨率/大小就更好了。
谢谢!
3个回答

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),他应该得到赞誉。

干杯


透明度不起作用,此时有其他替代方案吗? - Osa

6
有时候SWFRender在处理非常复杂的文件时会卡住,特别是在生成300dpi以上的图片时。这种情况下,可以尝试使用Gnash来解决问题。
gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf

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

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


4
您可以构建一个AIR应用程序,加载每个SWF,拍摄屏幕截图并将其写入文件。
问题在于您需要启动某些操作来进行渲染,据我所知,您无法在没有Flash播放器或其某些开源实现的情况下完成该操作。
我认为您最好使用AIR,SDK是免费且跨平台的。如果您习惯于Python,则应该很容易学习所需的AS3。
希望有所帮助,
J

谢谢!我没有想到过那个。我会尝试一下并发布我的结果。 - das_weezul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接