//替换内容中多个图片路径,由原来的路径转换为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(路径)进行转换
string pageContent = "";//原字符串内容中包含图片pageContent = Regex.Replace(pageContent, "(?i)<img([^<>]+?)src=\"(/[^\"]+?)\"", delegate(Match match){string m = "<img" + match.Groups[1].Value + "src=\"data:image/jpg;base64," +ImageToBase64(Server.MapPath(match.Groups[2].Value)) + "\"";return m;});/// <summary>/// Image路径 转成 base64/// </summary>/// <param name="fileFullName">图片的绝对路径</param>public static string ImageToBase64(string fileFullName){try{Bitmap bmp = new Bitmap(fileFullName);MemoryStream ms = new MemoryStream();var suffix = fileFullName.Substring(fileFullName.LastIndexOf('.') + 1,fileFullName.Length - fileFullName.LastIndexOf('.') - 1).ToLower();var suffixName = suffix == "png"? ImageFormat.Png: suffix == "jpg" || suffix == "jpeg"? ImageFormat.Jpeg: suffix == "bmp"? ImageFormat.Bmp: suffix == "gif"? ImageFormat.Gif: ImageFormat.Jpeg;bmp.Save(ms, suffixName);byte[] arr = new byte[ms.Length]; ms.Position = 0;ms.Read(arr, 0, (int)ms.Length); ms.Close();return Convert.ToBase64String(arr);}catch (Exception ex){return null;}}
