C#保存Base64格式图片

Posted CeleryCabbage

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(\0);
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 }

 

以上是关于C#保存Base64格式图片的主要内容,如果未能解决你的问题,请参考以下文章

c# richtextbox : 如果把richtextbox中的文字图片保存到数据库(access)中。

C# 如何从sql数据库中读取中imge图片字段转换成base64字符串格式

怎样将一个base64编码的图片保存到数据库,取出来是jpg格式的?

PHP将Base64图片转换为本地图片并保存

c# Base64编码和图片的互相转换代码

微信小程序 base64格式图片的展示保存及pdf打开