Webbrowser. Сохраняем картинку.

16 нояб. 2011 г. | | |

Задача: сохранить из webbrowser генерируемую на лету (на основе данных post-запроса) картинку.
Решение:


Пошагово:
Сначала получаем картинку по её id. Потом получаем Dom-объект страницы и через него создаем HTMLControlRange-объект, который позволит нам выполнять операции над коллекцией объектов, которую он содержит. Объекты добавляются через метод add(), но нам гораздо более интересен метод execCommand(), который выполняет команды на текущем документе (в нашем варианте - объект doc), на выделенной области или на коллекции объектов. В нашем случае, команда будет выполнятся на коллекции объектов IHTMLControlElement, состоящей из одного объекта image.
После копирования нужной картинки в буффер обмена (строка execCommand("Copy", false, null)), извлекаем картинку из буффера и сохраняем на диск. Всё.
Если нужно сохранить все картинки на странице, а не одну, то коллекцию картинок получаем через
HTMLElementCollection imgCollection = web.Document.GetElementsByTagName("img");
и в цикле выполняем код после создания HTMLControlRange-объекта:
Как видите, всё просто. Главное - не забыть подключить сборку Microsoft.mshtml.dll (в Solution Explorer правой кнопкой по узлу References в нужном проекте -> Add reference):

0 коммент.:

Отправить комментарий