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

    1.前端页面代码
    /**
    * 通过图片本地路径获取图片真实大小,并进行压缩
    */
    function getLocalRealSize(path, callback) {
        var img = new Image();
        var tempimg = new Image();
        img.src = path;
        img.onload = function() {
            var height = img.naturalHeight;
            var width = img.naturalWidth;
            img.width = img.naturalWidth;
            img.height = img.naturalHeight;
            //压缩图片
            var canvas = compressImage(img);
            tempimg = canvas.toDataURL('image/jpeg');
            
            callback(tempimg);
        } 
    }; 
    /**
    * 压缩图片
    */
    function compressImage(image) {
            var canvas = document.createElement("canvas");
            var mwidth = image.width;
            var mheight = image.height;
            var scale = 1;
            var i = 0;
            while (true) {
                if (mwidth >> i <= 1000 && mheight >> i <= 1000) {
                    scale = Math.pow(0.5, i);
                    break;
                }
                i += 1;
            }
            canvas.width = mwidth * scale;
            canvas.height = mheight * scale;
            canvas.getContext("2d").drawImage(image, 0, 0, mwidth * scale, mheight * scale);
            return canvas;
        }
        //主页面   车主首页    跳转
        document.getElementById("driverindex").addEventListener("tap", function() {
            //获取img对象
            var OwerImg = document.getElementById("owner-photo-img");
            var OwerCardImg = document.getElementById("owner-cardphoto-img");
            var OwerLicenceImg = document.getElementById("owner-driver1-img");
            var OwerDrivingLicenceImg = document.getElementById("owner-driver2-img");
            var CarImg = document.getElementById("owner-car-img");
            var AssuranceImg = document.getElementById("owner-sure-img");
            
            var oArray=source.split("|"); 
            var totalCount=imgCount+oArray.length-1;
            if(totalCount<6){
                mui.toast("请上传完整信息");
                return false; 
            }
            uploadImg();
        });
    });
    // 上传文件
    var uploadImg = function() {
        var server = imgUrl+'/clientapi/driver/ApplayCertification';
        //outSet("开始上传:")
        var wt = plus.nativeUI.showWaiting();
        var task = plus.uploader.createUpload(server, {
                method: "POST",
                blocksize: 20480000,
                priority: 100
            },
            function(t, status) { //上传完成
                if (t.state == 4 && status == 200) {
                    wt.close();
                    //outLine("上传成功:" + t.responseText);
                    //上传成功,跳转到车主首页
                    mui.toast('上传成功');
                    mui.fire(mycarPage, "pageflowrefresh" );
                    plus.webview.currentWebview().close();
                    mui.redirect('myaccount-mycar', '../myaccount/mycar.html');
                } else {
                    //outLine("上传失败:" + status);
                    wt.close();
                    mui.toast('上传失败');
                }
            }
        );
        task.addData("token", UserInfo.token());
        task.addData("source", source);
        task.start(); 
    }
    2.C#后台代码
     //将base64编码的字符串转为图片并保存
    protected string SaveBase64Image(string source, string path, int userID)
    {
        try
        {
            var now = DateTime.Now;
            string filePath = path + now.ToString("yyyy-MM-dd") + "/" + userID.ToString() + "/";
            string fileName = now.ToString("yyyyMMddhhmmssffff") + ".jpg";
            Log.Debug("filePath:" + filePath + fileName);
            string strbase64 = source.Substring(source.IndexOf(',') + 1);
            strbase64 = strbase64.Trim('');
            //Log.Debug("strbase64:" + strbase64);
            byte[] arr = Convert.FromBase64String(strbase64);
            using (MemoryStream ms = new MemoryStream(arr))
            {
                Log.Debug("进入了MemoryStream");
                Bitmap bmp = new Bitmap(ms);
                if (!Directory.Exists(Server.MapPath(filePath)))
                {
                    Log.Debug("没有Directory");
                    Directory.CreateDirectory(Server.MapPath(filePath));
                }
                //if (!Directory.Exists(filePath))
                //    Log.Debug("没有Directory");
                //Directory.CreateDirectory(filePath);
                //新建第二个bitmap类型的bmp2变量。
                Bitmap bmp2 = new Bitmap(bmp, bmp.Width, bmp.Height);
                //将第一个bmp拷贝到bmp2中
                Graphics draw = Graphics.FromImage(bmp2);
                draw.DrawImage(bmp, 0, 0);
                draw.Dispose();
                Log.Debug("保存图片前");
                bmp2.Save(Server.MapPath(filePath + fileName), System.Drawing.Imaging.ImageFormat.Jpeg);
                Log.Debug("保存图片后");
                //bmp.Save("test.bmp", ImageFormat.Bmp);
                //bmp.Save("test.gif", ImageFormat.Gif);
                //bmp.Save("test.png", ImageFormat.Png);
                ms.Close();
                return filePath + fileName;
            }
        }
        catch (Exception ex)
        {
            return null;
        }
    }
  • 相关阅读:
    杭电2050
    杭电2043,小细节。。。。。
    杭电2034,坑爹的人见人爱a-b
    杭电2035--人见人爱A^B
    杭电2032--杨辉三角
    杭电2029--Palindromes _easy version(回文串)
    杭电2028--Lowest Common Multiple Plus
    NPOI大数据分批写入同个Excel
    [每日一题] OCP1z0-047 :2013-07-25 权限――角色与对象权限
    Ubuntu下安装搜狗拼音输入法
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/8789811.html
Copyright © 2011-2022 走看看