AS3 JPEG Encoder應用:從Flash中保存圖片

AS3 在圖片處理方面給咱們帶來了使人驚奇的功能。其中一個特性就是容許將一個顯示對象編碼爲JPEG格式,固然要感謝JPEG Encoder包含在了AS3 Core Library裏面,這讓咱們能夠作一個實際上很是容易的實例。在這篇文章裏,我將向你展現如何建立一個Flash文件,而且把一個電影剪輯編碼成 JPEG格式,而後容許用戶下載這個圖片到他們的桌面上。php

或許下面這個例子能夠給你一些啓發,告訴你如何應用這項技術,嘗試在上面繪畫,而後點擊下面的按鈕吧。html

點擊這裏查看示例app

準備工做函數

在咱們開始以前,請確保你擁有了ActionScript. 3 Core Library。這個類庫包含了一些頗有用的類,用於簡化咱們的開發工做,好比MD5加密,日期格式化,圖片編碼等等。一旦你擁有這個類庫,只需將它拖放到你準備好的類文件夾中。如今咱們能夠引入JPGEncoder。編碼

Actionscript. 
import com.adobe.images.JPGEncoder; 
 加密

編碼電影剪輯spa

在這個示例中,咱們假設要被編碼的電影剪輯被命名爲sketch_mc。在咱們使用JPGEncoder以前,這個電影剪輯須要轉換爲Bitmap 格式。要作到這一點,咱們須要使用BitmapData類。這個類的構造器須要接受2個參數:寬度和高度。若是咱們但願最後的JPEG圖像的大小與 sketch_mc的大小一致,咱們可使用sketch_mc的寬度和高度屬性。而後咱們把sketch_mc做爲一個參數,使用draw函數繪製 Bitmap。.net

Actionscript. code

1 import com.adobe.images.JPGEncoder;
2  
3 var jpgSource:BitmapData = new BitmapData (sketch_mc.width, sketch_mc.height);
4 jpgSource.draw(sketch_mc); 

 


現 在sketch_mc已是Bitmap的數據來源,咱們可使用JPGEncoder了。在建立這個類的實例的時候,你能夠經過傳遞一個從1到 100的數字來設置壓縮比。而後爲了建立JPEG圖像,咱們須要調用encode函數,而且把咱們的Bitmap數據做爲傳遞參數。encode函數會以 ByteArray的形式返回JPEG圖像,在AS3中編寫這些代碼是很是容易的。htm

Actionscript. 

1 import com.adobe.images.JPGEncoder;
2  
3 var jpgSource:BitmapData = new BitmapData (sketch_mc.width, sketch_mc.height);
4 jpgSource.draw(sketch_mc);
5  
6 var jpgEncoder:JPGEncoder = new JPGEncoder(85);
7 var jpgStream:ByteArray = jpgEncoder.encode(jpgSource); 

 


從FlashPlayer中保存圖像到桌面

AS3 已經完成了將電影剪輯編碼爲JPEG的工做,可是咱們還須要一點小小的改動,讓它能夠真實的下載。要實現這一步,咱們須要使用 URLRequest類發佈ByteArray數據到一個動態網頁中。既然咱們要發送二進制數據,就須要設置內容類型爲 「application/octet-stream」。固然咱們下載文件的時候須要一個文件名稱,因此咱們爲動態網頁傳遞了一個字符串形式的參數。

Actionscript. 

import com.adobe.images.JPGEncoder;
 
var jpgSource:BitmapData = new BitmapData (sketch_mc.width, sketch_mc.height);
jpgSource.draw(sketch_mc);
 
var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
 
var header:URLRequestHeader = new URLRequestHeader(」Content-type」, 「application/octet-stream」);
var jpgURLRequest:URLRequest = new URLRequest(」jpg_encoder_download.php?name=sketch.jpg」);
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
navigateToURL(jpgURLRequest, 「_blank」); 

 


下面是用於保存JPEG圖片的PHP代碼。這裏我使用了PHP技術,實際上你可使用任何其它的動態語言。

PHP: 

if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
// get bytearray
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
 
// add headers for download dialog-box
header(’Content-Type: image/jpeg’);
header(」Content-Disposition: attachment; filename=」.$_GET[’name’]);
echo $jpg;
} 

 


文章來自: 閃客居(www.flashas.net) 詳文參考:http://www.flashas.net/html/flashasyy/20080619/3316.html

相關文章
相關標籤/搜索