环境:net framework 4.5.2


    1. using System;
    2. using System.Collections.Generic;
    3. using System.Drawing;
    4. using System.Drawing.Imaging;
    5. using System.IO;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Threading.Tasks;
    9. public static string Base64ToImg(string base64Code) {
    10. //先剪切
    11. string[] Image_Array = base64Code.Split(',');
    12. byte[] Arr = Convert.FromBase64String(Image_Array[1]);
    13. try {
    14. using (MemoryStream stream = new MemoryStream(Arr)) {
    15. var Source = new Bitmap(stream);
    16. //转成jpg
    17. var Eps = new EncoderParameters(1);
    18. var Ep = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 85L);
    19. Eps.Param[0] = Ep;
    20. ImageCodecInfo jpsEncodeer = null;
    21. if (Image_Array[0].ToLower() == "data:image/jpeg;base64") {
    22. jpsEncodeer = GetEncoder(ImageFormat.Jpeg);
    23. } else if (Image_Array[0].ToLower() == "data:image/png;base64") {
    24. jpsEncodeer = GetEncoder(ImageFormat.Png);
    25. } else {
    26. throw new Exception("");
    27. }
    28. //创建路径
    29. string FilePath = AppDomain.CurrentDomain.BaseDirectory + "/File/Images/";
    30. if (!System.IO.Directory.Exists(FilePath)) System.IO.Directory.CreateDirectory(FilePath);
    31. //声明文件类型
    32. string FileName = string.Format("{0}.jpg", Guid.NewGuid().ToString());
    33. //保存图片
    34. Source.Save(string.Format("{0}{1}", FilePath, FileName), jpsEncodeer, Eps);
    35. //释放资源
    36. Source.Dispose();
    37. Ep.Dispose();
    38. Eps.Dispose();
    39. return string.Format("/File/Images/{0}", FileName);
    40. };
    41. } catch (Exception) {
    42. return null;
    43. }
    44. }
    45. /// <summary>
    46. /// 获取文件对象
    47. /// </summary>
    48. /// <param name="format"></param>
    49. /// <returns></returns>
    50. public static ImageCodecInfo GetEncoder(ImageFormat format) {
    51. ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
    52. foreach (ImageCodecInfo codec in codecs) {
    53. if (codec.FormatID == format.Guid)
    54. return codec;
    55. }
    56. return null;
    57. }