Как получить образ из mshtml.htmlimg на жесткий диск
Без использования API?
Я знаю, что есть несколько способов.
Кстати, я использую библиотеку mshtml, которая лучше, чем веб-браузер. Я эффективно автоматизирую Internet Explorer прямо.
В основном я предпочитаю способ сделать изображение прямым, не зная URL-адреса htmlimg и не загрузив его.
Я знаю, что могу взять URL из элемента изображения и загрузить его с веб-клиентом. Изображение меняется в зависимости от куки и IP. Так что это не подойдет.
Я хочу, чтобы точные изображения, отображаемые элементом htmlimg, были сохранены.
По сути, как будто кто-то делает локальный скриншот того, что появляется на экране.
1 ответ
Здесь есть старое решение:
http://p2p.wrox.com/c/42780-mshtml-how-get-images.html
Хотя в эти дни вы, возможно, захотите проверить Html Agility Pack:
http://htmlagilitypack.codeplex.com/
Документация не совсем хорошая, однако; поэтому этот фрагмент кода может помочь:
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
// You can also load a web page by utilising WebClient and loading in the stream - use one of the htmlDoc.Load() overloads
var body = htmlDoc.DocumentNode.Descendants("body").FirstOrDefault();
foreach (var img in body.Descendants("img"))
{
var fileUrl = img.Attributes["src"].Value;
var localFile = @"c:\localpath\tofile.jpg";
// Download the image using WebClient:
using (WebClient client = new WebClient())
{
client.DownloadFile("fileUrl", localFile);
}
}