//替换内容中多个图片路径,由原来的路径转换为Base64位,采取的方式是正则表达式和delegate(委托)的联合使用,循环修改图片的图片路径,然后返回到原内容字符串当中
    //Regex.Replace 替换方法
    //匹配图片的正则表达式(?i)]+?)src=\”(/[^\”]+?) 忽略大小写,匹配图片路径并且排除Img中的属性
    //delegate(Match match) 匹配的正则表达式传递到委托中
    // string m = “<img” + match.Groups[1].Value + “src=\”data:image/jpg;base64,” +ImageToBase64(Server.MapPath(match.Groups[2].Value)) + “\””; return m; 修改图片路径并返回
    //ImageToBase64(Server.MapPath(match.Groups[2].Value)) 传入图片的绝对路径 Server.MapPath(路径)进行转换

    1. string pageContent = "";//原字符串内容中包含图片
    2. pageContent = Regex.Replace(pageContent, "(?i)<img([^<>]+?)src=\"(/[^\"]+?)\"", delegate(Match match)
    3. {
    4. string m = "<img" + match.Groups[1].Value + "src=\"data:image/jpg;base64," +ImageToBase64(Server.MapPath(match.Groups[2].Value)) + "\"";
    5. return m;
    6. });
    7. /// <summary>
    8. /// Image路径 转成 base64
    9. /// </summary>
    10. /// <param name="fileFullName">图片的绝对路径</param>
    11. public static string ImageToBase64(string fileFullName)
    12. {
    13. try
    14. {
    15. Bitmap bmp = new Bitmap(fileFullName);
    16. MemoryStream ms = new MemoryStream();
    17. var suffix = fileFullName.Substring(fileFullName.LastIndexOf('.') + 1,
    18. fileFullName.Length - fileFullName.LastIndexOf('.') - 1).ToLower();
    19. var suffixName = suffix == "png"
    20. ? ImageFormat.Png
    21. : suffix == "jpg" || suffix == "jpeg"
    22. ? ImageFormat.Jpeg
    23. : suffix == "bmp"
    24. ? ImageFormat.Bmp
    25. : suffix == "gif"
    26. ? ImageFormat.Gif
    27. : ImageFormat.Jpeg;
    28. bmp.Save(ms, suffixName);
    29. byte[] arr = new byte[ms.Length]; ms.Position = 0;
    30. ms.Read(arr, 0, (int)ms.Length); ms.Close();
    31. return Convert.ToBase64String(arr);
    32. }
    33. catch (Exception ex)
    34. {
    35. return null;
    36. }
    37. }