3

如何使用 C# 捕获特定 url 的图像?

我想使用 C# 自动捕获基于特定 url 的网页图像。

例如,我有一个页面包含一个 txtUrl.Text = " http://www.some.com/index.aspx " ,然后我单击一个按钮,如何捕获该 URL 的图像?

4

3 回答 3

2

如果您指的是网页的视觉效果,一种方法是将 IE 集成到您的应用程序中并以编程方式截取屏幕截图。this (用于集成的 Web 浏览器)和this(用于使用 C# 截屏)可能有用。这当然取决于 IE。

另一种选择是使用用于browsershots.org的 shotserver 和 shotfactory 项目。它们可以在这里找到,但我不确定是否有 .NET API。

于 2009-07-10T14:37:50.320 回答
2

我假设您想从 ASP.NET(而不是从 WinForms 应用程序)执行此操作。

在您的 Web 项目中,添加对 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"); 

接下来,只需使用 BitBlt API 函数(抱歉,我没有方便的链接)将 WebBrowser 控件的图形显示复制到位图(然后您可以显示或保存或其他)。使用此函数,WebBrowser 的 Handle 属性是要传递的参数之一。

更新:这里是一些代码的链接,可以满足您的需要: http: //www.developerfusion.com/code/4712/generate-an-image-of-a-web-page/

于 2009-07-10T15:10:21.950 回答
0

我认为仅使用 C# 是不可能的。这是因为 C# 或 .NET 框架不提供任何类型的 HTML 标记呈现功能。在我看来,你能得到的最接近的方法是使用 WebBrowser 控件,然后尝试以某种方式捕获它的图形输出(这将是呈现的页面)。

另一种方法是寻找一个可以做你想做的事情的.NET组件。虽然我不知道有什么做的。

于 2009-07-10T14:37:45.810 回答