2010-01-04 306 views
14

我希望能夠採用1幀SWF文件並通過PHP將其轉換爲PNG。我很好,使用命令行工具來完成這件事。將SWF轉換爲PNG

我該怎麼去做這件事?我發現an ActiveX library,但這看起來像一個太多的圖層。我也看到Gnash似乎有一個PNG output class,但我無法弄清楚如何從命令行得到這些信息,而無需對自己的代碼進行深層編碼。有沒有其他聰明的解決方案?謝謝!

編輯:爲了澄清,這不是我只想做一次的一次性任務。我希望能夠讓PHP腳本根據命令執行此任務。謝謝!

另一個編輯:一個更澄清。這不是用戶在Flash中繪製圖形的情況。我正在下載原始的1幀SWF文件,並且想要保存PNG副本以減少下載時間。這樣的任務可能嗎?再次感謝!

回答

23

可以使用swftools
swfrender file.swf -X pixelsize -Y pixelsize -o output.png

如果指定的參數只有一個-X -Y之間則比例尊重

+0

奇數。我查了swftools,但不知何故錯過了那個特定的工具,它完全符合我的需要。我會在今天晚些時候檢查:) – Matchu 2010-01-05 17:19:20

+0

似乎立即工作 - 並認爲我已經安裝了!謝謝! – Matchu 2010-01-05 17:30:26

+1

不幸的是,這似乎不適用於透明背景。令人敬畏的工具,但。我們的一位離岸開發人員正試圖建議[SWFToVideo](http://bytescout.com/products/developer/swftovideosdk/swftovideosdk.html),但其1000美元的許可證........ :(:*傷心臉* – 2011-12-30 14:21:40

2
+0

我寧願從服務器端技術開始,然後嘗試客戶端,因爲總會有惡意用戶在那裏。但是,謝謝 - 我會牢記它:) – Matchu 2010-01-04 20:36:49

+2

文章的要點是,截圖是在Flash中拍攝的。在那個時候你可以用那個圖像做任何你想做的事情。 – CookieOfFortune 2010-01-04 20:50:23

+0

PHP將允許您使用文件流將該png寫入服務器。它將在Flash中使用相同的機制來編碼.png數據,然後您只需將字節數組發送到您的PHP方法。 – Myk 2010-01-05 01:34:00

1

取決於你有,你可以在命令行中嘗試FFmpeg的SWF的類型:

ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png 
+0

「[swf @ 0x9b822c0]不支持壓縮的SWF格式」 - drat。試圖谷歌一個出路 - 顯然我應該能夠建立一個工具,將解壓縮它... – Matchu 2010-01-04 20:42:43

+1

有趣的。現在PNG被列爲ffmpeg的格式之一,但我無論如何也得不到「編解碼參數」。我會繼續努力的。 – Matchu 2010-01-04 21:38:48

+0

我得到了這個「無法找到編解碼參數」消息 – 2011-05-30 09:59:59

2

不是一個真正的基於服務器的解決方案,但我開發了一個AIR實用程序SWF轉換成PNG序列:http://swfrenderer.kurst.co.uk/

+0

這從我得到一個+1。經過數小時的搜索和測試,這是唯一可以將SWF可靠導出到png序列_with嵌入式影片剪輯的工作。即使v1 AIR應用程序仍然可以與CS6 SWF完美配合。 – indextwo 2017-06-03 11:06:37