zoukankan      html  css  js  c++  java
  • 交互第三方Flash+Asp.net(C#)保存图片到服务器

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~

      近来要把一个单机软件简单的绘图功能放到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();

        以上。

    文章结束给大家分享下程序员的一些笑话语录: 女人篇
      有的女人就是Windows虽然很优秀,但是安全隐患太大。
      有的女人就是MFC她条件很好,然而不是谁都能玩的起。
      有的女人就是C#长的很漂亮,但是家务活不行。
      有的女人就是C++,她会默默的为你做很多的事情。
      有的女人就是汇编虽然很麻烦,但是有的时候还得求它。
      有的女人就是SQL,她会为你的发展带来莫大的帮助。

  • 相关阅读:
    Kubernetes-一文详解ServiceAccount与RBAC权限控制
    删除无用的docker镜像与容器
    How do I write one to many query in Dapper.Net?
    c# 使用反射Reflection的Emit实现动态创建元数据及可执行文件
    IE浏览器下bootStrap form-control input输入框不显示兼容性问题
    WPF控件从一个窗口移动到另一个窗口,特别适合实时刷新的
    添加/扫描显示二维码中的换行之【另类视野】
    各浏览器官方离线版下载地址
    CentOS挂载NTFS
    System.Data.SQLite.Core for .NET 5 Core manual reference
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3091358.html
Copyright © 2011-2022 走看看