将RTF HTML中的Base64图片转为System.Drawing.Image并保存
从HTML富文本提取Base64图片并保存到本地
我来给你一套完整的解决方案,既能覆盖你已经实现的PNG格式,也能处理JPEG格式,还能自动从HTML字符串里批量提取所有符合条件的图片:
整体思路
- 用正则表达式匹配HTML中所有
data:image/xxx;base64,...格式的图片链接 - 从匹配结果中提取图片格式(png/jpeg)和对应的Base64编码内容
- 将Base64字符串转换为字节数组,再转为
System.Drawing.Image对象 - 自动创建
Images文件夹(如果不存在),并按格式保存图片
完整代码实现
using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Text.RegularExpressions; public class ImageExtractor { public static void ExtractAndSaveImagesFromHtml(string htmlContent, string saveFolder = "Images") { // 创建保存文件夹(如果不存在) if (!Directory.Exists(saveFolder)) { Directory.CreateDirectory(saveFolder); } // 正则匹配data:image/[png|jpeg];base64,xxx格式的图片 string pattern = @"data:image/(png|jpeg);base64,([a-zA-Z0-9+/=]+)"; MatchCollection matches = Regex.Matches(htmlContent, pattern, RegexOptions.IgnoreCase); int imageCounter = 1; foreach (Match match in matches) { try { // 提取图片格式和Base64内容 string imageFormat = match.Groups[1].Value.ToLower(); string base64Content = match.Groups[2].Value; // 将Base64转为字节数组 byte[] imageBytes = Convert.FromBase64String(base64Content); // 从字节数组创建Image对象 using (MemoryStream ms = new MemoryStream(imageBytes)) using (Image image = Image.FromStream(ms)) { // 确定保存的格式和文件名 ImageFormat format = imageFormat == "png" ? ImageFormat.Png : ImageFormat.Jpeg; string fileName = $"extracted_image_{imageCounter}.{imageFormat}"; string savePath = Path.Combine(saveFolder, fileName); // 保存图片 image.Save(savePath, format); Console.WriteLine($"成功保存图片:{savePath}"); imageCounter++; } } catch (Exception ex) { Console.WriteLine($"处理图片时出错:{ex.Message}"); } } } } // 使用示例 // string yourHtml = "你的富文本HTML内容"; // ImageExtractor.ExtractAndSaveImagesFromHtml(yourHtml);
关键细节说明
- 正则表达式:
RegexOptions.IgnoreCase确保匹配不区分大小写(比如Data:Image/PNG;base64,...也能被捕获) - 资源释放:用
using语句自动释放MemoryStream和Image对象,避免内存泄漏 - 格式判断:根据提取的格式自动选择对应的
ImageFormat,保证保存的图片格式正确 - 异常处理:捕获转换和保存过程中的异常,避免单个图片处理失败导致整个流程中断
如果你需要支持更多图片格式(比如gif),只需要修改正则表达式的(png|jpeg)部分,添加对应的格式即可。
内容的提问来源于stack exchange,提问作者CJH
相关产品推荐
相关产品推荐

