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