++的博客

你看不见我,你看不见我。。
随笔 - 22, 文章 - 0, 评论 - 2, 引用 - 0
数据加载中……

在ActionScript3.0中, 将Flash本地图像上传到服务器上

有这样一些应用:用户在Flash中编辑照片,将编辑后的图片使用WEB SERVICE发送到服务器.
在AS2.0中,要实现这个功能非常麻烦,需要逐像素点处理图片,然后生产可读字符串,传送到服务器上。
在AS3.0中,加入了ByteArray对象,使一切都变得简单方便多了

首先需要2个AS类 PNGEncoder 和Base64
前者在Adobe网站上可以找到, 后者是开源的

PNGEncoder

Base64

下面的代码就很简单了,首先获取到BitmapData对象,然后用PNGEncoder编码压缩一次,再用Base64编码得到可读字符串,然后通过WEB SERVICE发送到服务器
    var objBitmap:BitmapData = new BitmapData( mcPlaceHolder.width
                                               , mcPlaceHolder.height
                                               ,
true
                                               ,
0
                                               );
    objBitmap.draw(mcPlaceHolder)
    
var bytes:ByteArray = PNGEncoder.encode(objBitmap);   
    
//trace( Base64.encode(bytes) );
    
    
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;

    
var ws:WebService = new WebService(paramObj["WebSvcPath"]);
    ws.onLoad 
= function(e)
    
{
        trace(
this.getWsInfo());
    }

    ws.onError 
= function(e)
    
{
        trace(e.toString());
    }

    

    
var sr:EventDispatcher = ws.call("TestUpdate", Base64.encode(bytes));
    sr.addEventListener(
"complete", completeHandler);
    sr.addEventListener(
"error", errorHandler);

    
function errorHandler(e)
    
{
         
    }

    
function completeHandler(e)
    
{
         trace(
"-------------------------");
         trace(
"TestUpdate xml:");
         trace(e.xml);
         
         trace(
"-------------------------");
         trace(
"TestUpdate data:");
         trace(e.data);
    }

posted on 2008-06-19 10:51 Jerry.Wang 阅读(911) 评论(0)  编辑 收藏 引用 所属分类: 开发