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>
  • 相关阅读:
    spring + velocity实现分页程序
    Velocity分页模板
    .Net之NVelocity的三种用法
    .Net下模板引擎NVelocity的封装类――VelocityHelper
    NVelocity系列:NVelocity的语法及指令
    Velocity用户手册
    NVelocity的增强功能
    NVelocity配置详解
    报Error creating bean with name 'dataSource' defined in class path resource 报错解决办法
    如何向老外索要代码【转】
  • 原文地址:https://www.cnblogs.com/CoderWayne/p/1777908.html
Copyright © 2011-2022 走看看