zoukankan      html  css  js  c++  java
  • C#保存Base64格式图片

      1 1.前端页面代码
      2 /**
      3 * 通过图片本地路径获取图片真实大小,并进行压缩
      4 */
      5 function getLocalRealSize(path, callback) {
      6     var img = new Image();
      7     var tempimg = new Image();
      8     img.src = path;
      9     img.onload = function() {
     10         var height = img.naturalHeight;
     11         var width = img.naturalWidth;
     12         img.width = img.naturalWidth;
     13         img.height = img.naturalHeight;
     14         //压缩图片
     15         var canvas = compressImage(img);
     16         tempimg = canvas.toDataURL('image/jpeg');
     17         
     18         callback(tempimg);
     19     } 
     20 }; 
     21 /**
     22 * 压缩图片
     23 */
     24 function compressImage(image) {
     25         var canvas = document.createElement("canvas");
     26         var mwidth = image.width;
     27         var mheight = image.height;
     28         var scale = 1;
     29         var i = 0;
     30         while (true) {
     31             if (mwidth >> i <= 1000 && mheight >> i <= 1000) {
     32                 scale = Math.pow(0.5, i);
     33                 break;
     34             }
     35             i += 1;
     36         }
     37         canvas.width = mwidth * scale;
     38         canvas.height = mheight * scale;
     39         canvas.getContext("2d").drawImage(image, 0, 0, mwidth * scale, mheight * scale);
     40         return canvas;
     41     }
     42     //主页面   车主首页    跳转
     43     document.getElementById("driverindex").addEventListener("tap", function() {
     44         //获取img对象
     45         var OwerImg = document.getElementById("owner-photo-img");
     46         var OwerCardImg = document.getElementById("owner-cardphoto-img");
     47         var OwerLicenceImg = document.getElementById("owner-driver1-img");
     48         var OwerDrivingLicenceImg = document.getElementById("owner-driver2-img");
     49         var CarImg = document.getElementById("owner-car-img");
     50         var AssuranceImg = document.getElementById("owner-sure-img");
     51         
     52         var oArray=source.split("|"); 
     53         var totalCount=imgCount+oArray.length-1;
     54         if(totalCount<6){
     55             mui.toast("请上传完整信息");
     56             return false; 
     57         }
     58         uploadImg();
     59     });
     60 });
     61 // 上传文件
     62 var uploadImg = function() {
     63     var server = imgUrl+'/clientapi/driver/ApplayCertification';
     64     //outSet("开始上传:")
     65     var wt = plus.nativeUI.showWaiting();
     66     var task = plus.uploader.createUpload(server, {
     67             method: "POST",
     68             blocksize: 20480000,
     69             priority: 100
     70         },
     71         function(t, status) { //上传完成
     72             if (t.state == 4 && status == 200) {
     73                 wt.close();
     74                 //outLine("上传成功:" + t.responseText);
     75                 //上传成功,跳转到车主首页
     76                 mui.toast('上传成功');
     77                 mui.fire(mycarPage, "pageflowrefresh" );
     78                 plus.webview.currentWebview().close();
     79                 mui.redirect('myaccount-mycar', '../myaccount/mycar.html');
     80             } else {
     81                 //outLine("上传失败:" + status);
     82                 wt.close();
     83                 mui.toast('上传失败');
     84             }
     85         }
     86     );
     87     task.addData("token", UserInfo.token());
     88     task.addData("source", source);
     89     task.start(); 
     90 }
     91 2.C#后台代码
     92  //将base64编码的字符串转为图片并保存
     93 protected string SaveBase64Image(string source, string path, int userID)
     94 {
     95     try
     96     {
     97         var now = DateTime.Now;
     98         string filePath = path + now.ToString("yyyy-MM-dd") + "/" + userID.ToString() + "/";
     99         string fileName = now.ToString("yyyyMMddhhmmssffff") + ".jpg";
    100         Log.Debug("filePath:" + filePath + fileName);
    101         string strbase64 = source.Substring(source.IndexOf(',') + 1);
    102         strbase64 = strbase64.Trim('');
    103         //Log.Debug("strbase64:" + strbase64);
    104         byte[] arr = Convert.FromBase64String(strbase64);
    105         using (MemoryStream ms = new MemoryStream(arr))
    106         {
    107             Log.Debug("进入了MemoryStream");
    108             Bitmap bmp = new Bitmap(ms);
    109             if (!Directory.Exists(Server.MapPath(filePath)))
    110             {
    111                 Log.Debug("没有Directory");
    112                 Directory.CreateDirectory(Server.MapPath(filePath));
    113             }
    114             //if (!Directory.Exists(filePath))
    115             //    Log.Debug("没有Directory");
    116             //Directory.CreateDirectory(filePath);
    117             //新建第二个bitmap类型的bmp2变量。
    118             Bitmap bmp2 = new Bitmap(bmp, bmp.Width, bmp.Height);
    119             //将第一个bmp拷贝到bmp2中
    120             Graphics draw = Graphics.FromImage(bmp2);
    121             draw.DrawImage(bmp, 0, 0);
    122             draw.Dispose();
    123             Log.Debug("保存图片前");
    124             bmp2.Save(Server.MapPath(filePath + fileName), System.Drawing.Imaging.ImageFormat.Jpeg);
    125             Log.Debug("保存图片后");
    126             //bmp.Save("test.bmp", ImageFormat.Bmp);
    127             //bmp.Save("test.gif", ImageFormat.Gif);
    128             //bmp.Save("test.png", ImageFormat.Png);
    129             ms.Close();
    130             return filePath + fileName;
    131         }
    132     }
    133     catch (Exception ex)
    134     {
    135         return null;
    136     }
    137 }
  • 相关阅读:
    在DevExpress程序中使用SplashScreenManager控件实现启动闪屏和等待信息窗口
    使用Setup Factory安装包制作工具制作安装包
    PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
    在DevExpress中使用CameraControl控件进行摄像头图像采集
    读取数据库信息构建视图字段的备注信息,方便程序代码生成
    混合框架中Oracle数据库的还原处理操作
    使用图片视频展示插件blueimp Gallery改造网站的视频图片展示
    .NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用
    在Winform界面菜单中实现动态增加【最近使用的文件】菜单项
    文字处理控件TX Text Control的使用
  • 原文地址:https://www.cnblogs.com/CeleryCabbage/p/5266189.html
Copyright © 2011-2022 走看看