如何从SWF文件中提取图像?

pri*_*dev 20 flash

我在SWF文件中有一个Flash对象.它包含我需要提取的图像,因此我可以直接将其用于不支持Flash的设备.

如何从SWF中提取图像?我应该使用什么工具?

Tom*_*Tom 26

有一个开源工具包,可以很好地完成工作.在Windows上,您需要以管理员身份运行安装程序,否则它将死亡.然后将文件夹添加到PATH(或不),你可以拉出jpegs.第一:

swfextract /path/to/file.swf
Run Code Online (Sandbox Code Playgroud)

这将列出文件中的所有资产.在这种情况下,请注意JPEG部分中的ID.然后为每个id运行

swfextract /path/to/file.swf -i id -o name-of-my-new-file.jpg
Run Code Online (Sandbox Code Playgroud)


小智 7

我同意Tom 使用开源工具包作为回答.

要构建工具并在linux/mac上安装,请使用wiki中指定的这些命令:

tar -zvxf swftools-0.x.x.tar
cd swftools-0.x.x
./configure
make 
make install
Run Code Online (Sandbox Code Playgroud)

以下是提取所有资产的命令:

swfextract --outputformat "extract_%06d.%s" -a 1- test.swf

正如此Wiki页面中所指定的那样.

  • 无需在Ubuntu-Debian中编译它,该软件包作为swftools存在于官方存储库中:'sudo apt-get install swftools' (7认同)
  • 在 Mac 上:“brew install swftools” (2认同)

Mc-*_*Mc- 2

嗯,这取决于具体情况,无论如何,您都需要一种方法来识别文件中的图像(也称为符号)。

案例 1. 嵌入

[Embed(source="assets/library.swf", symbol="AImage")]
[Bindable]
public var AImage:Class;
Run Code Online (Sandbox Code Playgroud)

案例 2. 运行时

(此代码在加载器加载 swf 源文件后执行)

loader.contentLoaderInfo.applicationDomain.getDefinition("AImage");
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你