在我的场景中,我想以编程方式下载页面(Internet 上的任何页面)的 HTML,但我还希望 HTML 中的所有图像都采用 base64 嵌入格式(未引用)
换句话说,而不是:
<img src='/images/delete.gif' />
我希望下载的 html 看起来像这样:
<img src="data:image/gif;base64,R0lGODl..." />
这样我就不需要经历将所有图像存储在目录等中的过程。
你们中有人知道如何做到这一点吗?或者任何插件可以有效地做到这一点?
最佳答案
那么,您需要:
- 下载原始 HTML
- 在 HTML 中找到每个
img
元素(例如使用 HTML agility pack )并为每个元素:- 如果它已经在使用数据 URL,请忽略它
- 否则:
- 下载图片
- 使用
Convert.ToBase64String
将其编码为 Base64 - 将原始
img
标签替换为使用 base64 版本的标签(在原始字符串中,或通过 DOM 表示形式)
- 将最终的 HTML 保存到磁盘
这些步骤中的任何一个是否给您带来了特定的问题?您可以通过并行下载图像来加快速度,但我会先使用串行版本。
关于c# - 读取包含 Base64-Embedded 格式的所有图像的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7650924/