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 = 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 onMouseDown():void
{
startX = myCanvas.mouseX;
startY = myCanvas.mouseY;
flag = true;
} private function onMouseUp():void
{
flag = false;
} private function onMouseMove():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>

最新文章

  1. Node.js学习之简介
  2. systemctl命令用法详解
  3. c++模板
  4. document.body.scrollTop
  5. 127.0.0.1和localhost完全相等吗?
  6. winform(多窗体、菜单和工具栏)
  7. windows8运行php Composer出现SSL报错的问题
  8. 基于css3的3D立方体旋转特效
  9. IOS7官方推荐图标和图像尺寸
  10. 字符串处理---统计每一行字符串当中的字符“u”个数
  11. Python与MySQL首次交互
  12. jquery validationEngine的使用
  13. openbr on linuxmint13/ubuntu12.04/debian7 x64 facial recognition [Compile from source!!!]
  14. bzoj 4817: [Sdoi2017]树点涂色
  15. 浅谈 HTML5plus 开发移动应用
  16. Java并发编程的挑战
  17. valueForKeyPath用途
  18. java接口签名(Signature)实现方案续
  19. CentOS 7 安装pip2
  20. Java中的Arrays类使用详解

热门文章

  1. STL六大组件之——分配器(内存分配,好深奥的东西)
  2. Java 分割文件 注意事项
  3. leetcode:Longest Substring Without Repeating Characters
  4. PHPSTORM 与 Xdebug 配合调试
  5. ref 参数
  6. Android Activity学习笔记(一)
  7. ZOJ-3349 Special Subsequence 线段树优化DP
  8. POJ 2398 Toy Storage(计算几何,叉积判断点和线段的关系)
  9. oracle学习 十 数据库的语句优化(持续更)
  10. POJ-2785 4 Values whose Sum is 0(折半枚举 sort + 二分)