zoukankan      html  css  js  c++  java
  • 利用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 = 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>
  • 相关阅读:
    shell脚本学习001
    Discuz 代码分析 001 forum.php
    Oauth2.0 入门
    第一篇文章
    position的四个属性值: relative ,absolute ,fixed,static
    JQuery中stop([clearQueue],[goToEnd])介绍
    <meta>
    sublime 2中Package control安装和使用
    ios 状态码
    <video>和<audio>标签,对视频和音频的支持
  • 原文地址:https://www.cnblogs.com/fx2008/p/4222238.html
Copyright © 2011-2022 走看看