[转载]AS3 JPEG Encoder应用:从Flash中保存图片
来源:互联网 发布:java 监听端口 编辑:程序博客网 时间:2024/04/30 09:57
原文地址
AS3 在图片处理方面给我们带来了令人惊奇的功能。其中一个特性就是允许将一个显示对象编码为JPEG格式,当然要感谢JPEG Encoder包含在了AS3 Core Library里面,这让我们可以做一个实际上非常容易的实例。在这篇文章里,我将向你展示如何创建一个Flash文件,并且把一个电影剪辑编码成 JPEG格式,然后允许用户下载这个图片到他们的桌面上。
或许下面这个例子可以给你一些启发,告诉你如何应用这项技术,尝试在上面绘画,然后点击下面的按钮吧。
点击这里查看示例
准备工作
在我们开始之前,请确保你拥有了ActionScript. 3 Core Library。这个类库包含了一些很有用的类,用于简化我们的开发工作,比如MD5加密,日期格式化,图片编码等等。一旦你拥有这个类库,只需将它拖放到你准备好的类文件夹中。现在我们可以引入JPGEncoder。
Actionscript.
import com.adobe.images.JPGEncoder;
编码电影剪辑
在这个示例中,我们假设要被编码的电影剪辑被命名为sketch_mc。在我们使用JPGEncoder之前,这个电影剪辑需要转换为Bitmap 格式。要做到这一点,我们需要使用BitmapData类。这个类的构造器需要接受2个参数:宽度和高度。如果我们希望最后的JPEG图像的大小与 sketch_mc的大小一致,我们可以使用sketch_mc的宽度和高度属性。然后我们把sketch_mc作为一个参数,使用draw函数绘制 Bitmap。
Actionscript.
import com.adobe.images.JPGEncoder;
var jpgSource:BitmapData = new BitmapData (sketch_mc.width, sketch_mc.height);
jpgSource.draw(sketch_mc);
现 在sketch_mc已经是Bitmap的数据来源,我们可以使用JPGEncoder了。在创建这个类的实例的时候,你可以通过传递一个从1到 100的数字来设置压缩比。然后为了创建JPEG图像,我们需要调用encode函数,并且把我们的Bitmap数据作为传递参数。encode函数会以 ByteArray的形式返回JPEG图像,在AS3中编写这些代码是非常容易的。
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);
从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;
}
- [转载]AS3 JPEG Encoder应用:从Flash中保存图片
- AS3 JPEG Encoder应用:从Flash中保存图片
- jdk1.3中保存jpeg图片
- 从视频中保存图片
- [翻译]ActionScript 3 Jpeg Encoder实例:保存flash中的图片 - [flash开发]
- 从flash抓取jpeg格式图片
- Access中保存图片
- PB中保存图片
- android 中保存图片
- PB中保存图片
- Tapestry 怎样从数据库中保存的图片显示出来。
- Android应用中保存网络图片功能实现详解
- 在ASP.net中保存/取出图片入/从SQL数据库(可用于上传图片)
- 在ASP.net中保存/取出图片入/从SQL数据库(可用于上传图片)
- 在ASP.net中保存/取出图片入/从SQL数据库(可用于上传图片)
- 在ASP.net中保存/取出图片入/从SQL数据库
- xml中保存如何保存图片及从XML中读取出来显示到浏览器中
- 在hibernate中保存从对象
- 匈牙利命名
- AfxBeginThread的基本用法
- RFT中文字显示为方框的问题
- 从逻辑架构讲解SOA的精髓
- Ubuntu中文件编码转化工具 enca
- [转载]AS3 JPEG Encoder应用:从Flash中保存图片
- 初识SOAP
- Rod Johnson平衡的质疑:Spring维护策略的再次调整
- AfxBeginThread函数初探
- 今天终于成了ACM备战者了,高兴中!!
- 帮帮我 谢谢
- SPI 协议及简单的实例
- 简单文件下载
- 如何测试client与服务器始终保持连接的?