2011年8月10日 星期三

[教學] 輸出JPG 和PNG 檔

在Adobe AIR 運行時, 用戶端如需要輸出圖像時, 可以利用JPEGEncoder 和PNGEncoder 幫助編碼, 然後使用File 和FileStream 產生檔案. 這方法在電腦和流動電話中, 同樣有效運作, 十分實用.
以下一實例為大家介紹, 把餅形統計圖輸出成圖像.


範例功能:
  • 將餅形統計圖, 輸出成JPG 和PNG 檔, 儲存於系統內

範例使用類別說明:
  • JPEGEncoder - 將原始的位圖圖像轉換為編碼圖像
  • PNGEncoder - 無損壓縮將原始位圖圖像轉換為編碼圖像
  • ByteArray - 提供方法和屬性,好讓讀取、寫入及使用二進位資料的動作最佳化
  • File - 代表檔案或目錄的路徑。這可能是現有檔案或目錄,或是尚未存在的檔案或目錄
  • FileStream - 用來讀取及寫入檔案

輪出JPG 檔:
var bitmapData:BitmapData = new BitmapData(myChart.width, myChart.height);
bitmapData.draw(myChart);

var jpgEnc:JPEGEncoder = new JPEGEncoder(85);
var jpgByteArray:ByteArray = jpgEnc.encode(bitmapData);
var jpgFile:File = File.userDirectory.resolvePath("snapshot.jpg");
var fs:FileStream = new FileStream();
try{
 fs.open(jpgFile,FileMode.WRITE);
 fs.writeBytes(jpgByteArray);
 fs.close();
}catch(e:Error){
 // when error...
}

輪出PNG 檔:
var bitmapData:BitmapData = new BitmapData(myChart.width, myChart.height);
bitmapData.draw(myChart);

var pngEnc:PNGEncoder = new PNGEncoder();
var pngByteArray:ByteArray = pngEnc.encode(bitmapData);
var pngFile:File = File.userDirectory.resolvePath("snapshot.png");
var fs:FileStream = new FileStream();
try{
 fs.open(pngFile,FileMode.WRITE);
 fs.writeBytes(pngByteArray);
 fs.close();
}catch(e:Error){
 // when error...
}

大家可以 [下載], 然後簡單輸出圖像檔玩玩.

參考資料: http://cookbooks.adobe.com/post_Save_a_local_image_file__JPEG_or_PNG__from_an_imag-8406.html

沒有留言: