在Linux上将SWF文件转换为PNG图像

时间:2014-11-13 02:06:41

标签: python linux flash

在有人发布投诉之前已经回答了类似问题之前,请继续阅读。

我一直在研究从企鹅俱乐部档案中获取SWF文件的机器人(例如Houndstooth Bag (icon))并将该文件呈现为PNG图像。目前,我一直在使用Python的 swf 模块执行此操作,但有时会leads to unwanted results,其他尝试(swfrender,swfextract,gnash等)会渲染图像在网页上(就像它被切成两半)。

问题是:有没有办法使用任何Linux程序或Python库对脚本进行这些转换,使得输出图像看起来很专业(类似于从JPEXS导出的图像或任何其他体面的SWF反编译器?)

我的Python代码看起来或多或少是这样的(我知道输出是一个SVG,但SVG-PNG转换相当简单,所以这根本不是一个问题。)

from swf.movie import SWF
from swf.export import SVGExporter

file = open('item.swf', 'rb')

swf = SWF(file)

svg_exporter= SVGExporter()

svg = swf.export(svg_exporter)

open('item.svg', 'wb').write(svg.read())

任何帮助都很高兴。

2 个答案:

答案 0 :(得分:0)

我建议你看看swftools

图片提取示例:

$ swfextract myfile.swf

Objects in file myfile.swf:
[-i] 3 Shapes: ID(s) 1-3
[-i] 5 MovieClips: ID(s) 4, 5, 8, 10, 12
[-j] 3 JPEGs: ID(s) 69, 116, 447
[-p] 1 PNG: ID(s) 318
[-s] 3 Sounds: ID(s) 28-30
[-f] 10 Frames: ID(s) 0-10

$ swfextract -p 318 myfile.swf -o out_file.png

还有一个swfrender实用程序,尚未完成, 并且仅适用于非常简单的SWF文件。 (没有动作脚本,没有 渐变填充,无变形形状,无混合模式,无滤镜等。)

$ swfrender myfile.swf -X pixelsize -Y pixelsize -o out_file.png

如果您感兴趣,可以查看python bindings

答案 1 :(得分:0)

没关系,我发现swfbboxswfcombine做了很多工作。谢谢你的帮助。

对于未来的读者(包括我自己):

$ swfbbox -o newfile.swf file.swf -e
$ swfcombine -s 5000 -o newfile.swf --dummy newfile.swf
$ swfrender -o file.png newfile.swf