2012-03-09 58 views
8

如何在Linux上將swf呈現爲圖像文件? 我需要能夠將其他swfs加載到swf中並運行actionscript代碼。將swf呈現爲PNG或其他圖像格式

它甚至可能在Linux上?我需要從PHP中完成,如果我必須使用命令行工具,那很好。

+0

可能重複http://stackoverflow.com/questions/2001946/convert-swf-to-渲染SWF幀PNG) – ruakh 2012-03-11 01:37:05

回答

16

swfrender from swftools適用於基本的SWF文件。

swfdec-thumbnailer from swfdec-gnome雖然只能得到swf的第一幀,

要使用swfdec從swf獲取任何幀,請參閱以下郵件列表中的C代碼片段post

gnash from gnash also works gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf,swf的最後一張圖片。

ffmpegffmpeg也適用於一些SWF格式ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png

也看到了一個命令行管道下面guide

爲了從php調用外部程序,請使用exec命令記錄here

請注意,出於安全原因,爲安全起見,使用另一個命令(如escapeshellcmdescapeshellarg)傳遞給exec的參數很重要。

無論是單幀還是全幀,轉換爲圖像格式後,都無法運行動作腳本。其他非GNU/Linux工具支持從SWF中導出動作腳本。

如果要導出到PNG的SWF是太複雜了其他工具比你可以使用Flash插件或GnashXvfb與屏幕捕捉軟件一起拍攝的AVI視頻格式的SWF的任何圖像幀或。然後你可以從視頻格式中提取圖像。

這個虛擬framebuffer方法將支持複雜的SWF文件,雖然它需要大量的工作,因爲如果你想捕獲一個特定的集合,你需要使用Gnash和Xvfb和Screen Capture,或者瀏覽器,Xvfb和Selenium鼠標/鍵盤與SWF的交互。

帶和不帶虛擬FrameBuffer的Gnash應該在導出之前加載ActionScript,但可能會遇到複雜ActionScript的問題。帶有Virtual Framebuffer的Flash插件將在導出之前加載ActionScript。

另請參閱下面的StackOverflow的問題,你的問題是

+0

除了我需要swf中的actionscript可以運行外,我知道swfrender不能用於我想要的功能。其他人是否允許actionscript運行? – 2012-03-10 16:44:25

+0

一旦導出到PNG,無論使用哪種工具,生成的PNG圖像或動畫都無法運行動作。 – Appleman1234 2012-03-10 21:58:42

+2

不,我的意思是說,在導出Flash影片之前,它需要運行代碼來顯示我想要的內容。 – 2012-03-12 00:34:59

1

這是一個重複的是我最終使用的解決方案。

您可以像使用Xvfb(X11服務器)的工具,並運行裏面的獨立的Flash播放器投影機(您可能需要安裝一堆的32位庫),然後使用屏幕捕獲實用工具象import捕捉屏幕和裁剪大小。

我發現this page渲染SWF截圖在Linux有幫助。它還說,你可以使用gnash來做到這一點,但gnash不適用於Flash Player 9+。

相關問題