环境:net framework 4.5.2
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public static string Base64ToImg(string base64Code) {
//先剪切
string[] Image_Array = base64Code.Split(',');
byte[] Arr = Convert.FromBase64String(Image_Array[1]);
try {
using (MemoryStream stream = new MemoryStream(Arr)) {
var Source = new Bitmap(stream);
//转成jpg
var Eps = new EncoderParameters(1);
var Ep = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 85L);
Eps.Param[0] = Ep;
ImageCodecInfo jpsEncodeer = null;
if (Image_Array[0].ToLower() == "data:image/jpeg;base64") {
jpsEncodeer = GetEncoder(ImageFormat.Jpeg);
} else if (Image_Array[0].ToLower() == "data:image/png;base64") {
jpsEncodeer = GetEncoder(ImageFormat.Png);
} else {
throw new Exception("");
}
//创建路径
string FilePath = AppDomain.CurrentDomain.BaseDirectory + "/File/Images/";
if (!System.IO.Directory.Exists(FilePath)) System.IO.Directory.CreateDirectory(FilePath);
//声明文件类型
string FileName = string.Format("{0}.jpg", Guid.NewGuid().ToString());
//保存图片
Source.Save(string.Format("{0}{1}", FilePath, FileName), jpsEncodeer, Eps);
//释放资源
Source.Dispose();
Ep.Dispose();
Eps.Dispose();
return string.Format("/File/Images/{0}", FileName);
};
} catch (Exception) {
return null;
}
}
/// <summary>
/// 获取文件对象
/// </summary>
/// <param name="format"></param>
/// <returns></returns>
public static ImageCodecInfo GetEncoder(ImageFormat format) {
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs) {
if (codec.FormatID == format.Guid)
return codec;
}
return null;
}