利用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>
利用FluorineFx的ByteArray上传图片的更多相关文章
- 利用AS3的ByteArray解析SWF的尺寸
AS3的ByteArray可以用来操作二进制.使用它,我们就获取加载进来的SWF的尺寸. 首先要了解下SWF的文件结构,可以下载官方的PDF看下. 用UltraEdit32打开一个SWF,会看到第一个 ...
- 利用FluorineFX录制音频与视频
要做一个完整的录制程序,处理RPC请求的类不仅要继承ApplicationAdapter,还要继承IStreamService接口,该接口定义了play(),pause(),publish(),cre ...
- javascript 利用FileReader和滤镜上传图片预览
FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File或 Blob对象指定要读取的文件或数据. 1.FileReader接口的方法 Fi ...
- vue 利用原声input上传图片并预览并删除
<template> <div class="com-upload-img"> <div class="img_group"> ...
- yii2利用自带UploadedFile上传图片
创建一个 models/UploadForm.php: <?php namespace app\models; use yii\base\Model; use yii\web\UploadedF ...
- 利用python web框架django实现py-faster-rcnn demo实例
操作系统.编程环境及其他: window7 cpu python2.7 pycharm5.0 django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...
- AFNet3.0上传图片
很多iOS应用都会遇到需要上传图片的情况,比如修改个人资料时需要上传自己的头像,最近我也遇到了这种情况,首先参考之前写过的AFNetWorking3.0处理请求头和请求内容. 我们在上述博客的基础之上 ...
- Flex数据交互之Remoting
一 前言 Flex数据交互常用的有三种方式:WebService.HttpService以及Remoting. WebService方式已在这篇文章中给出,这篇文章主要讲解以Remoting方式进行数 ...
- 程序员级别鉴定书(.NET面试问答集锦)
作为一个.NET程序员,应该知道的不仅仅是拖拽一个控件到设计时窗口中.就像一个赛车手,一定要了解他的爱车 – 能做什么不能做什么. 本文参考Scott Hanselman给出的.NET问题列表,整理如 ...
随机推荐
- js获取字符串最后一个字符代码
方法一:运用String对象下的charAt方法 charAt() 方法可返回指定位置的字符. 代码如下 复制代码 str.charAt(str.length – 1) 请注意,JavaScript ...
- php 高效分页
mysql.php 获取数据库中的记录,完全个人经验总结,仅供参考!<?php/***PHP+MYSQL数据库基本功能*http://blog.csdn.net/yown*/########## ...
- 数往知来 ASP.NET 表单的提交_url传值_重定向 <十八>
一.表单提交时注意 如果是以get方式提交数据的时候,在接收时是用QueryString方式进行接收 如果是以post请求数据时在接收时是用Form进行接收 为什么么要这样做呢?我们用Request[ ...
- <bgsound>和<embed></embed>标签 頁面插入音樂
■ <BGSOUND> 是用以插入背景音乐,但只适用於 IE,其参数设定不多. <BGSOUND src="liberation.mp3"; autostart= ...
- vim 配置语法高亮 行号标示
配置VIM主要是开启VIM的语法高亮和行号标示,因为默认在用户目录(~)下没有vimrc,所以需要先去复制一个,然后再编辑 cp /etc/vim/vimrc ~/.vimrc vim .vimrc ...
- Camera拍照声设定
在某些国家(比如Japan),为了防止偷拍,强制拍照声是需要从Speaker出来的(即使插入耳机的情况下). 实现该功能比较简单的方法就是将拍照声类型设置为Ringtone 或 Alarm 或 Not ...
- 徐汉彬:亿级Web系统搭建——单机到分布式集群(转载)
文章转载自http://www.csdn.net/article/2014-11-06/2822529/1 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的 ...
- Archlinux 踩坑实录
Archlinux 没声音 1. 排查驱动,声卡驱动没问题 2.排查alsa,alsa没问题(并确认声卡存在且取消静音) 3.抱着尝试的心态,安下VLC.然后提示找不到默认声卡设备(大概这个意思),通 ...
- Java 类型信息
<Thinking in Java 4th>第14章 类型信息 运行时类型信息(Run-Time Type Identification)使得你可以在程序运行时发现和使用类型信息. 14. ...
- AnnotationSessionFactoryBean用法介绍
http://blog.csdn.net/flyingfalcon/article/details/8273618 —————————————————————————————————————————— ...