在有人发布投诉之前已经回答了类似问题之前,请继续阅读。
我一直在研究从企鹅俱乐部档案中获取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())
任何帮助都很高兴。
答案 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)
没关系,我发现swfbbox
和swfcombine
做了很多工作。谢谢你的帮助。
对于未来的读者(包括我自己):
$ swfbbox -o newfile.swf file.swf -e
$ swfcombine -s 5000 -o newfile.swf --dummy newfile.swf
$ swfrender -o file.png newfile.swf