2009-07-14 57 views
2

我使用actionscript的getPixel和php的imagecreatetruecolor和imagesetpixel的組合來生成瀏覽器中的swf電影的png圖像。我可以從Flash文件動態生成300 dpi的圖像嗎?

目前它將以與swf電影相同的分辨率輸出72 dpi圖像,但我被問到可能生成300 dpi圖像。

這可能嗎?

回答

4

Flash並不知道有關分辨率或dpi的任何信息。以正確數量的像素和打印質量從閃光燈輸出圖像的唯一方法是將電影縮放到該像素數量並使用打印質量的圖像或矢量圖形。否則,你只需要一個編程縮放的圖像,這並不比發送72dpi圖像打印更好。長話短說,閃光燈不是一個好的印刷設計平臺。

0

是的,應該是可以的。您可以減小輸出圖像的大小(從而增加DPI),或者使用插值將有效分辨率從72 DPI增加到300 DPI。

1

我假設您使用BitmapData.draw來生成圖像?如果在將圖像轉儲到BitmapData之前縮放swf(scaleXscaleY),則可以獲得更高的採樣率=更高的DPI。

如果您不想要更多數據,只需插值(如McWafflestix建議),則可以嘗試使用比例Matrix作爲draw的第二個參數。

0

當然可以,我不知道的Adobe Flash 9,但我認爲它的工作原理有

這裏是我的解決辦法,也許是壞的,或愚蠢的作弄,但它的工作原理

所有你需要的是玩每個項目,你需要在300 dpi的分辨率 某種

for(...) 
{ 
    var item:* = items[i] 
    item.x = item.x * delta_dpi 
    item.y = item.y * delta_dpi 
    item.width = item.width * delta_dpi 
    item.height = item.height * delta_dpi 

    if(item is TextArea) 
    // here you must increase sizes for text 
    [your_text_size] = [your_text_size] * delta_dpi 
    // and you need to apply new size to your area 

---------- 
    // in my case i used this function 
    if(item is TextArea) 
     item.htmlText = remakeText(item.htmlText) 

} 

function remakeText():String 
{ 
    var arr:Array = str.split('SIZE="')    
    var str:String 
    var i:int; 

    for(i=1; i < arr.length; i++) 
    { 
    str = arr[i] 
    var idx:int = str.indexOf('"') 
    var str2:String = str.substr(0, idx) 
    var nr:Number 
    if(to300) 
    nr = Number(str2) * 3.125 
    else 
    nr = Number(str2)/3.125 
    str = 'SIZE="' + nr + str.substring(idx) 
    arr[i] = str 
    } 

    str = '' 
    for(i=0; i < arr.length; i++) 
     str += arr[i] 

    return str 
} 
相關問題