首页 > 代码库 > 利用FluorineFx的ByteArray上传图片
利用FluorineFx的ByteArray上传图片
Flex端利用new PNGEncoder().encode(bitmapData)将png图片转换为ByteArray,然后传给服务器,服务端需要定义一个public ByteArray UploadImage(ByteArray ba)方法
服务器端相关代码
using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Drawing;using System.Web;using FluorineFx;using FluorineFx.AMF3;namespace ServiceLibrary5{ [RemotingService] public class ByteStreamService { public ByteArray UploadImage(ByteArray ba) { MemoryStream ms = new MemoryStream(ba.GetBuffer()); Image img = Bitmap.FromStream(ms); Bitmap newImage = new Bitmap(img); MemoryStream tempStream = new MemoryStream(); newImage.Save(tempStream, System.Drawing.Imaging.ImageFormat.Png); string path = HttpContext.Current.Server.MapPath("UpLoad/ByteArray.png"); FileStream fs = new FileStream(path, FileMode.Create); tempStream.WriteTo(fs); fs.Close(); ByteArray result = new ByteArray(tempStream); return result; } }}
Flex端相关代码
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Panel x="28" y="58" width="364" height="417" layout="absolute"> <mx:Canvas id="myCanvas" x="0" y="0" width="334" height="331" mouseDown="onMouseDown()" mouseUp="onMouseUp()" mouseMove="onMouseMove()"> </mx:Canvas> <mx:ControlBar x="135" y="459"> <mx:ColorPicker change="curColor = event.target.selectedColor" /> <mx:Button label="清空" click="onClear()" /> <mx:Button label="保存" click="onSave()" /> </mx:ControlBar> </mx:Panel> <mx:Image id="imgBox" x="462" y="83"/> <mx:Script> <![CDATA[ import mx.core.UIComponent; import mx.containers.Box; import mx.controls.Alert; import mx.rpc.events.ResultEvent; import mx.graphics.codec.PNGEncoder; private var flag:Boolean = false; private var startX:int; private var startY:int; private var curColor:uint = 0x000000; private function onSave():void { var bd:BitmapData = http://www.mamicode.com/new BitmapData(myCanvas.width,myCanvas.height); bd.draw(myCanvas); var byteArray:ByteArray = new PNGEncoder().encode(bd); var nc:NetConnection = new NetConnection(); nc.client = this; var responder:Responder = new Responder(onResult,onStatus); nc.connect("http://localhost:9782/Web/Gateway.aspx"); nc.call("ServiceLibrary5.ByteStreamService.UploadImage",responder,byteArray); } private function onResult(result:ByteArray):void { //利用Loader读取图片 var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); loader.loadBytes(result); } private function onComplete(event:Event):void { //利用UIComponent加载Loader对象 var loader:Loader = (event.target as LoaderInfo).loader; loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onComplete); var pictureHolder:UIComponent = new UIComponent(); pictureHolder.addChild(loader); this.imgBox.width = myCanvas.width; this.imgBox.height = myCanvas.height; this.imgBox.addChild(pictureHolder); } private function onStatus(obj:Object):void { Alert.show(obj.code.toString()); } private function onClear():void { myCanvas.graphics.clear(); } private function onm ouseDown():void { startX = myCanvas.mouseX; startY = myCanvas.mouseY; flag = true; } private function onm ouseUp():void { flag = false; } private function onm ouseMove():void { if(flag) { myCanvas.graphics.moveTo(startX,startY); myCanvas.graphics.lineStyle(2,curColor); myCanvas.graphics.lineTo(myCanvas.mouseX,myCanvas.mouseY); startX = myCanvas.mouseX; startY = myCanvas.mouseY; } } ]]> </mx:Script></mx:Application>
利用FluorineFx的ByteArray上传图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。