You need to enable JavaScript to run this app. 如何使用VB.net从HTML文件中提取内嵌base64格式图片并保存
优惠活动
大模型
产品
解决方案
定价
更多

如何使用VB.net从HTML文件中提取内嵌base64格式图片并保存

实现方案

核心思路

你的场景非常固定,每个HTML仅包含1个base64内嵌的img标签,不需要复杂的第三方依赖即可实现:首先从HTML文本中提取base64编码段,再解码写入本地为对应格式的图片文件即可。

实现步骤

  • 新建.NET控制台/类库项目,简单场景下原生API即可满足需求,无需引入额外NuGet包
  • 遍历目标文件夹下所有后缀为.html的文件
  • 读取每个HTML的文本内容,匹配提取img标签src属性中的base64编码和图片格式标识
  • 解码base64字符串为字节数组
  • 按原HTML文件名+对应图片后缀命名,将字节数组写入指定输出路径

完整可运行代码示例

using System;
using System.IO;
using System.Text.RegularExpressions;

namespace Base64ImageExtractor
{
    class Program
    {
        static void Main(string[] args)
        {
            // 替换为你的HTML文件所在文件夹路径
            string htmlFolderPath = @"C:\Your\Html\Storage\Path";
            // 替换为图片保存的目标文件夹路径
            string outputImageFolder = @"C:\Your\Image\Output\Path";

            // 自动创建不存在的输出文件夹
            if (!Directory.Exists(outputImageFolder))
            {
                Directory.CreateDirectory(outputImageFolder);
            }

            // 读取所有HTML文件
            string[] htmlFiles = Directory.GetFiles(htmlFolderPath, "*.html");

            foreach (string htmlPath in htmlFiles)
            {
                try
                {
                    string htmlContent = File.ReadAllText(htmlPath);

                    // 正则匹配base64格式的图片资源
                    Regex base64ImgRegex = new Regex(@"data:image/(?<format>png|jpg|jpeg);base64,(?<base64Content>[^""]+)");
                    Match matchResult = base64ImgRegex.Match(htmlContent);

                    if (matchResult.Success)
                    {
                        string imgFormat = matchResult.Groups["format"].Value;
                        string base64Str = matchResult.Groups["base64Content"].Value;

                        // 解码base64为字节数组
                        byte[] imgBytes = Convert.FromBase64String(base64Str);

                        // 生成输出文件名,复用原HTML文件名避免冲突
                        string fileName = Path.GetFileNameWithoutExtension(htmlPath);
                        string outputPath = Path.Combine(outputImageFolder, $"{fileName}.{imgFormat}");

                        // 写入本地文件
                        File.WriteAllBytes(outputPath, imgBytes);
                        Console.WriteLine($"提取成功:{outputPath}");
                    }
                    else
                    {
                        Console.WriteLine($"跳过文件{htmlPath}:未匹配到有效base64图片");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"处理文件{htmlPath}失败:{ex.Message}");
                }
            }

            Console.WriteLine("全部文件处理完成");
            Console.ReadKey();
        }
    }
}

适配调整说明

  • 如果你的HTML中img标签用的是单引号包裹src属性,把正则中的[^""]修改为[^']即可适配
  • 若后续需要处理结构更复杂的HTML,可引入AngleSharp库做DOM解析提取src属性,避免正则匹配漏判
  • 处理单文件体积超过10M的base64图片时,可换成流式读取解码逻辑降低内存占用

内容的提问来源于stack exchange,提问作者jiju kj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 00:45:07