Как использовать C # для захвата изображения определенного URL? - PullRequest
3 голосов
/ 10 июля 2009

Как использовать C # для захвата изображения определенного URL?

Я хочу использовать C # для автоматического захвата изображения веб-страницы на основе определенного URL.

Например, у меня есть страница, содержащая txtUrl.Text = "http://www.some.com/index.aspx", затем я нажимаю кнопку, как я могу захватить изображение этого URL?

Ответы [ 3 ]

2 голосов
/ 10 июля 2009

Если вы имеете в виду визуальное отображение веб-страницы, один из подходов заключается в интеграции IE с вашим приложением и программном создании снимка экрана. Это (для встроенного веб-браузера) и это (для создания снимков экрана с C #) могут быть полезны. Это, конечно, зависит от IE.

Другой вариант - использование проектов shotserver и shotfactory, используемых для browsershots.org . Их можно найти здесь , хотя я не уверен, что для этого есть .NET API.

2 голосов
/ 10 июля 2009

Я предполагаю, что вы хотите сделать это из ASP.NET (в отличие от приложения WinForms).

В своем веб-проекте добавьте ссылку на System.Windows.Forms (да, это плохая вещь). Затем в своем коде вы можете создать объект типа System.Windows.Forms.WebBrowser:

WebBrowser browser = new WebBrowser();
// this will load up a URL into the web browser:
browser.Navigate(@"http://www.stackoverflow.com"); 

Далее, просто используйте функцию API BitBlt (извините, у меня нет удобной ссылки), чтобы скопировать графическое отображение элемента управления WebBrowser в растровое изображение (которое затем можно отобразить, сохранить или как угодно). С помощью этой функции свойство Handle WebBrowser является одним из передаваемых параметров.

Обновление: вот ссылка на некоторый код, который делает именно то, что вам нужно: http://www.developerfusion.com/code/4712/generate-an-image-of-a-web-page/

0 голосов
/ 10 июля 2009

Я не думаю, что это действительно возможно только с использованием C #. Это потому, что C # или .NET Framework в этом отношении не предлагают никаких возможностей рендеринга HTML-разметки. Самое близкое, что вы можете получить - по моему мнению - это использовать элемент управления WebBrowser, а затем попытаться каким-то образом захватить его графический вывод (который будет отображаемой страницей).

Другим способом сделать это было бы поискать компонент .NET, который мог бы делать то, что вы хотите ... Хотя я не знаю ни одного, который делает.

...