【问题标题】:Convert SWF files to PNG images on Linux在 Linux 上将 SWF 文件转换为 PNG 图像
【发布时间】:2014-11-14 21:06:16
【问题描述】:

在有人发帖抱怨已经回答了类似的问题之前,请继续阅读。

我一直在开发一个机器人,它从企鹅俱乐部档案(例如Houndstooth Bag (icon))中获取 SWF 文件并将该文件呈现为 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())

非常感谢任何帮助。

【问题讨论】:

    标签: python linux flash


    【解决方案1】:

    我建议你看看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

    【讨论】:

    • 你用我链接的文件试过了吗?
    【解决方案2】:

    没关系,我发现 swfbboxswfcombine 做了很多工作。不过,感谢您的帮助。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 2011-07-09
      • 2011-02-01
      相关资源
      最近更新 更多