2007/04/28 | as3+cf实现BitmapData图片数据保存
类别(flash As) | 评论(2) | 阅读(804) | 发表于 21:24
作者:www.klstudio.com | 来源:www.klstudio.com | 浏览次数:103 | 2007-3-16 13:38:43


as3+cf实现BitmapData图片数据保存

测试代码需要用下面的类
<html>
<listing>
1.PNGEncoder类,这个类你可以到labs.adobe.com上面找,另外可以在这里下载;
www.klstudio.com/download/PNGEncoder.as


2. Base64类,这个上篇已经提供了!
www.klstudio.com/post/110.html

3. RemotingService类!

package com.klstudio.remoting{

import flash.net.NetConnection;

import flash.net.ObjectEncoding;

public class RemotingService extends NetConnection{

function RemotingService(url:String,amf:uint=ObjectEncoding.AMF0){

this.objectEncoding = amf;

this.connect(url);

}

}

}





Coldfusion服务端test.cfc文件内容
<cfcomponent>

<cffunction name="saveImage" access="remote" returntype="string">

<cfargument name="fileName" type="string" required="yes">

<cfargument name="fileData" type="string" required="yes">

<cfobject name="stream" action="create" type="java" class="java.io.FileOutputStream">

<cfset stream.init(expandPath(arguments.fileName))>

<cfset stream.write(ToBinary(arguments.fileData))>

<cfset stream.close()>

<cfreturn arguments.fileName>

</cffunction>

</cfcomponent>





测试代码
package{

import flash.display.*;

import flash.net.*;

import flash.utils.ByteArray;

import com.adobe.images.PNGEncoder;

import com.klstudio.util.*;

import com.klstudio.remoting.*;

public class Test extends Sprite {

public function Test() {

this.drawFace();

}

private function drawFace():void{

//这个就是一个flash显示元素;

var face:Face = new Face();

face.x = 0;

face.y = 0;

face.name = "face";

this.addChild(face);

var bmd:BitmapData = new BitmapData(face.width, face.height, true, 0);

bmd.draw(face);

var bytes:ByteArray = PNGEncoder.encode(bmd);

var remote:RemotingService = new RemotingService("http://localhost:8500/flashservices/gateway");

//如果服务端支持AMF3的话,就不用转换成Base64字符编码了,可以直接传ByteArray数据,但我用的cf只支持AMF0所以只好Base64编码化,但这个方法同进还可以通过页面提交方式提供数据出去!

remote.call("test.saveImage",new Responder(onResult, onFault),"test.png",Base64.encode(bytes,true));

}

private function onResult(result:Object):void {

trace("result:"+result);

}

private function onFault(fault:Object):void{

trace("fault:"+fault.details);

}

}

}

</listing>
</html>
0

评论Comments

日志分类
首页[193]
flash As[107]
有的没的[59]
数码照片[4]
自由世界[19]
blender[4]