2011-08-16 20 views
0

我有一個swf頁面,我想將其轉換爲png文件。 在我轉換文件之前,我想放大swf文件,以便我有更大的圖像。 我嘗試使用swftools進行轉換,但是png圖像質量不夠好:放大的png圖像看起來太模糊。如何保存swf文件的放大副本

你應該怎麼做才能捕捉/使用swf文件的放大版本。 一個Linux兼容的命令行工具將是偉大的,因爲我正在考慮轉換數百個圖像。

非常感謝

回答

2

這不是一個Linux的方式,但我無法想象還有什麼。

我的解決方案是編寫AIR應用程序,該應用程序加載swf文件,將其添加到其屏幕,製作「prinscreen」並將打印屏幕保存到png。

1)每個顯示對象可以BitmapData用另外的變換控制(需要縮放)可以得出,例如:

var btn:Button = new Button; 
var bitmap:BitmapData = new BitmapData(width, height); 
var m:Matrix = new Matrix; 
m.scale(2, 2); 
bitmap.draw(btn, m); 

更多內容:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#draw%28%29

2)BitmapData可以轉換爲PNG並保存。要轉換你可以使用內置的PNGEncoder。輸出BiteArray可以保存到指定的文件:

var bitmap:BitmapData = makeScreenShot(); 
var encoder:PNGEncoder = new PNGEncoder(); 
var bytes:ByteArray = encoder.encode(bitmap); 
var imgStream:FileStream = new FileStream(); 
var img:File = new File(path); 
imgStream.open(img, FileMode.WRITE); 
imgStream.writeBytes(bytes); 
imgStream.close(); 

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/FileStream.html

Additionaly,因爲包括PNGEncoder很慢,你可以自己使用Alchemy寫,因爲PNGLIB被移植(它是在SDK中的例子)。

3)你可以通過在命令行參數pathes主權財富基金到AIR應用程序:

<mx:WindowedApplication 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    invoke="onInvoke(event)"> 
    ... 

private function onInvoke(event:InvokeEvent):void 
{ 
    for each (str:String in event.arguments) 
     //do something 
} 

http://cookbooks.adobe.com/post_How_do_I_use_command_line_arguments_with_my_AIR_ap-8003.html

+0

似乎我將無法將文件轉換批量呢?那是對的嗎?你認爲這值得嘗試(安裝,學習語法等)。 – artsince

+0

您將可以批量轉換文件。正如我所提到的,AIR應用程序支持參數,因此您可以將swf列表傳遞給它並轉換consecutevly。至於我,這是值得嘗試的,但我不需要學習^^。另一個原因 - 看起來,這是最簡單的解決方案(如果不是唯一的話)。 – moropus