首先要获取到Base64数据
//imgData为Base64数据 if (imgData != "" && imgData != null) { //这里是关键 m 获取的是当前运行项目的路径, string m = System.AppDomain.CurrentDomain.BaseDirectory; //调用方法传入要存放的路径和Base64图片数据 imgData = Base64StringToImage(m + @"images\AlarmPicture\", imgData); } else { imgData = ""; }
下面是进行转换和保存到本地的方法
/// <summary> /// 将Base64图片转为图片保存到本地 /// </summary> /// <param name="strImagePath"></param> /// <param name="strBase64Image"></param> /// <returns></returns> public static string Base64StringToImage(string strImagePath, string strBase64Image) { string jpgName = string.Empty; TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0); //这里是将图片按时间戳进行重命名,并加上文件格式 jpgName = Convert.ToInt64(ts.TotalSeconds).ToString() + ".jpg"; //有的base64数据传过来的前缀是文件的名称,可以使用此方法去除掉 //string[] img_array = strBase64Image.Split(','); byte[] arr = Convert.FromBase64String(strBase64Image); string jpgPathName = strImagePath + jpgName; //byte[] arr = Convert.FromBase64String(strBase64Image); MemoryStream ms = new MemoryStream(arr); System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(ms); bmp.Save(jpgPathName, System.Drawing.Imaging.ImageFormat.Jpeg); //bmp.Save(jpgPathName, System.Drawing.Imaging.ImageFormat.Bmp); //bmp.Save(txtFileName + ".gif", ImageFormat.Gif); //bmp.Save(txtFileName + ".png", ImageFormat.Png); ms.Close(); return jpgPathName; }