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