Если хотите, на лету измените HTML-код, подобный следующему:
<html><head><style>
body {
background: transparent url(http://example.com/image.gif) no-repeat right bottom;
}
</style><head>
<body>
<img src="http://example.com/image2.gif"/>
</body>
</html>
К (URL-адреса обрезаны):
<html><head><style>
body {
background: transparent url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/...) no-repeat right bottom;
}
</style>
<head>
<body>
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/...."/>
</body>
</html>
Теперь я использую этот код:
private string EmbebedImages(string strHtml)
{
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(strHtml);
foreach (var imgNode in doc.DocumentNode.SelectNodes("//img[@src]"))
{
string url = imgNode.Attributes["src"].Value;
if (url.StartsWith("http"))
{
using (var webClient = new WebClient())
{
var imageAsByteArray = webClient.DownloadData(url);
string mimeType = MimeMapping.GetMimeMapping(url);
imgNode.Attributes["src"].Value = "data:" + mimeType + ";base64," +
Convert.ToBase64String(imageAsByteArray);
}
}
}
return doc.DocumentNode.OuterHtml;
}
Но мой код игнорирует URL в CSS.
Можно ли сделать это изменение простым? Я пытался с некоторыми css-библиотеками, но я не могу найти простую форму ...