//替换内容中多个图片路径,由原来的路径转换为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;
}
}