/// <summary>
/// 操作开始,在页面中<img>标签中写入的base64
/// </summary>
/// <param name="StringIn">当含有Base64的html</param>
/// <param name="FilePath">数据保存地址</param>
/// <returns></returns>
public static string ImageOutToFile(string StringIn,string FilePath)
{
HtmlAgilityPack.HtmlDocument Html = new HtmlAgilityPack.HtmlDocument();
Html.LoadHtml(StringIn);
HtmlNodeCollection images = Html.DocumentNode.SelectNodes("//img");
if (images!=null)
{
for (int i = 0; i < images.Count; i++)
{
if (images[i].Attributes["src"] != null)
{
string BsStr = images[i].Attributes["src"].Value;//获取数据base64数据
if (BsStr.Length > 150)//大于50可以成bas64
{
string ImageScr = Base64toImage(BsStr, FilePath);
images[i].Attributes["src"].Value = ImageScr;
}
}
}
}
return Html.DocumentNode.InnerHtml;
}
/// <summary>
/// base64转图片保存
/// </summary>
/// <param name="BsStr"></param>
/// <returns></returns>
public static string Base64toImage(string BsStr,string FilePath)
{
BsStr = BsStr.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//将base64头部信息替换
byte[] bytes = Convert.FromBase64String(BsStr);
MemoryStream memStream = new MemoryStream(bytes);
string TimePath = $@"/{DateTime.Now.Year}/{DateTime.Now.Month}/";
System.Drawing.Image mImage = System.Drawing.Image.FromStream(memStream);
string DIr = $"{FilePath}\\{DateTime.Now.Year}\\{DateTime.Now.Month}\\";
if (!Directory.Exists(DIr))
{
Directory.CreateDirectory(DIr);
}
//Bitmap bp = new Bitmap(mImage);
string Name = Guid.NewGuid().ToString("N") + ".jpg";
string FileName = DIr + Name;
mImage.Save(FileName, System.Drawing.Imaging.ImageFormat.Jpeg);//注意保存路径
string OutFileName = @"/UploadFile/ActivePic" + TimePath + Name;
return OutFileName;
}
我的Base64操作保存图片
最新推荐文章于 2024-05-20 22:28:51 发布