2016-04-25 50 views
0

我有大約2,000個SWF文件用於我的網站的頭像生成。時代已經改變,我想離開Flash。我唯一的問題是,我必須從這些SWF文件中生成2,000個PNG圖像才能夠這樣做。自然,我研究了自動化工具來幫助解決這個問題。如何從SWF文件生成PNG圖像?

我正在查看swftools並發現swfrender,它是一個很棒的工具,但它不適用於我的SWF文件。在SWF文件中的對象都位於0,0,它的關閉屏幕,像這樣:

The object on the stage at x: 0, y: 0

所以,當swfrender呈現圖像,原來是這樣的:

swfrender result

我正在尋找一種工具,可以提取舞臺內容,無論位置如何,並將其輸出到PNG圖像中。

一些額外的細節:

  • 的SWF文件都AS1和AS2
  • 一些SWF文件有多個幀
  • SWF內容中的每個SWF之間的尺寸變化,從而一些可能是100像素,而其他可能是10px

我希望這是命令行,如果可能的話,所以它可以自動完成,比我需要通過每一個手動完成並手動完成導出它。

+1

一個有趣的問題,但像「我正在尋找一個工具」這樣的短語表明StackOverflow的「超出範圍」問題。最好編輯你的Q,刪除這些短語(你有幾個這樣的),並顯示「你已經嘗試過的代碼」。其他人可能會用更好的工具加入,或者不明顯地使用可用的選項。祝你好運。 – shellter

回答

-1

導出>導出圖片。將它從FLASH文件導出到png。除非您使用Windows切割工具,否則無法從SWF獲得照片。

1

什麼swfrender確實是渲染的SWF。你可以嘗試提取的對象而不是swfextract,這也包括在swftools

swftools Wiki

要提取的一切使用...

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等)。無論如何,我希望這至少對你有所幫助!