我的网站有大约2,000个用于头像生成的SWF文件。时代已经改变,我想离开Flash。我唯一的问题是我必须从这些SWF文件中生成2,000个PNG图像才能够这样做。所以,很自然地,我研究了自动化工具来帮助解决这个问题。
我正在研究swftools并找到了swfrender,它是一个很棒的工具,但它对我的SWF文件没有用。 SWF文件中的对象位于0,0,它就像屏幕上一样:
因此,当swfrender呈现图像时,结果如下:
我正在寻找能够提取舞台内容的工具,无论位置如何,都将其输出到PNG图像中。
其他一些细节:
如果可能的话,我希望这是命令行,所以它可以自动完成,并且比我通过每个操作并手动导出它更快。
答案 0 :(得分:1)
swfrender 做的是渲染 SWF。您可以使用 swfextract 尝试提取对象, swftools 也包含。
提取一切用途......
swfextract --outputformat "extract_%06d.%s" -a 1- test.swf
还有一些来自手册页的帮助:
Extract all:
-a Extract all files
--outputformat "extract_%06d.%s" Filename to use for extraction (printf format)
否则,如果您只想提取某些对象,可以这样做:
提取单个项目。首先,运行
swfextract file.swf
并获取Flash应用程序包含的任何内容。输出如下:
Objects in file file.swf:
[-i] 8 Shapes: ID(s) 2, 5, 7, 9, 11, 13, 15, 17
[-i] 1 MovieClip: ID(s) 18
[-j] 8 JPEGs: ID(s) 1, 4, 6, 8, 10, 12, 14, 16
[-F] 1 Font: ID(s) 3
[-f] 1 Frame: ID(s) 0
这些是您可以提取的对象。例如,如果要将第三个jpg(ID = 6)提取到文件file.jpeg,则命令为:
swfextract -j 6 file.swf -o file.jpeg
所以,如果你想从每个SWF文件中提取所有内容,而不是混淆所有内容,那么我想到的最佳解决方案就是从每个SWF中提取每一堆文件。您可以通过使用for
循环来实现:为每个SWF文件创建一个文件夹,并提取该文件夹中SWF的每个元素。这对以后处理它们很有用。
但是,例如,形状被提取为SWF,您可以渲染它们,或者在渲染之前调整它们的大小。
另一点是,您可能需要调整大小,或在渲染之前移动对象。您可以使用swftools中的其他工具来承担这一责任: swfcombine 。此工具通常用于组合SWF对象,但您可以使用它来移动或调整其上的元素:
−d, −−dummy Don't require slave objects (for changing movie attributes)
然后你应该能够正确渲染它。
我很抱歉,如果我困惑你,但有很多选择......似乎这取决于具体情况(我不知道这是如何处理不同种类的SWF,如如AS1,AS2等。无论如何,我希望这至少对你有帮助!
答案 1 :(得分:1)
不启动僵尸线程,但是在尝试了Lutarisco建议的swf工具并且无法安装后,我发现https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/version11.2.0
希望这会帮助其他尝试从其swfs中提取图像的人:) 您可以设置背景颜色以清除并选择导出为形状或框架,还可以操纵导出大小以获取更大的图像
答案 2 :(得分:-1)
导出>导出图片。从FLASH文件中将其导出到png。除非您使用Windows裁剪工具,否则无法从SWF获取照片。