加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flash+Asp.net(C#)保存图片到服务器

发布时间:2020-12-15 18:08:04 所属栏目:百科 来源:网络整理
导读:? ??最近要把一个单机软件简单的绘图功能放到WEB上,考虑常识了诸多方案,如果是单纯的保存图片再简单不过了,但绘制的数据要记录,要与服务器交互,绘制逻辑比较复杂,用AJAX在交互及业务上会相当大的工作量;自定义控件在交互和效率上也没任何优势。无奈最

?

??最近要把一个单机软件简单的绘图功能放到WEB上,考虑常识了诸多方案,如果是单纯的保存图片再简单不过了,但绘制的数据要记录,要与服务器交互,绘制逻辑比较复杂,用AJAX在交互及业务上会相当大的工作量;自定义控件在交互和效率上也没任何优势。无奈最终还是觉得FLASH要好的多。

??Flash绘图比较简单,但本身不支持JPG等格式编码,需要FLEX的库,无奈不想搞的太复杂,只能用第三方封装的库'?com.adobe.images.JPGEncoder':

?

https://github.com/mikechambers/as3corelib/downloads

?

Flash代码:?

import?flash.display.BitmapData;

//引用第三方库
import?com.adobe.images.JPGEncoder;

stop();

//保存按腻

btn_save.addEventListener(MouseEvent.CLICK,?bt_save_event);
function?bt_save_event(event:MouseEvent)?:?void{
????????????doSave();
????????????return;
}//?end?function

function?doSave(){
?

//从MC获取位图
?var?jpgSource:BitmapData?=?new?BitmapData?(mc_test.width,?mc_test.height);

?jpgSource.draw(mc_test);

?var?jpgEncoder:JPGEncoder?=?new?JPGEncoder(85);

?var?jpgStream:ByteArray?=?jpgEncoder.encode(jpgSource);

//保存在客户端
?//var?file:FileReference?=?new?FileReference();
?//file.save(jpgStream,"test.jpg");

?

//请求服务器
?var?jpgURLRequest:URLRequest?=?new?URLRequest("ScreenSplitHandler.ashx");?

//HTTP头
?var?header:URLRequestHeader?=?new?URLRequestHeader("Content-type",?"application/octet-stream");???
?var?_loader:URLLoader?=?new?URLLoader();
?jpgURLRequest.requestHeaders.push(header);???
?jpgURLRequest.method?=?URLRequestMethod.POST;???
?jpgURLRequest.data?=?jpgStream;???

_loader.addEventListener(Event.COMPLETE,completeHandler);?
_loader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);?
_loader.load(jpgURLRequest);?


}
function?completeHandler(evt:Event):void?{?
?txt_msg.text?=?"成功";?
?trace(URLLoader(e.target).data?);//
}?
function?ioErrorHandler(evt:IOErrorEvent):void?{?
?txt_msg.text?=?"失败";?
?}?

?

Asp.net代码:

?

?这里用了ashx文件,只帖核心代码:

?

????????????context.Response.ClearContent();

//响应输出类型(用于FLASH接收返回)
????????????context.Response.ContentType?=?"text/plain";

//这里看到网上有些使用的是第三方库来接收的,因为C#没有bytearray,实际上bytearray就是byte[]啊--!
????????????byte[]?_bmp?=?context.Request.BinaryRead(context.Request.ContentLength);
????????????MemoryStream?ms?=?new?MemoryStream(_bmp);
????????????System.Drawing.Image?img?=?Bitmap.FromStream(ms);
????????????Bitmap?bmp?=?new?Bitmap(img);
????????????MemoryStream?tempStream?=?new?MemoryStream();
????????????bmp.Save(tempStream,?ImageFormat.Jpeg);
????????????FileStream?fs?=?new?FileStream("test.jpg",?FileMode.Create);
????????????tempStream.WriteTo(fs);
????????????tempStream.Close();
????????????tempStream.Dispose();
????????????fs.Close();
????????????fs.Dispose();

?

以上。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读