如何以编程方式创建给定网站的屏幕截图?

时间:2009-04-17 20:53:36

标签: screenshot image-capture

我希望能够创建给定网站的屏幕截图,但网站可能比屏幕上可以查看的要大。有没有办法可以做到这一点?

目标是在WinForms应用程序中使用C#中的.NET执行此操作。

7 个答案:

答案 0 :(得分:8)

有一些工具。

问题是,您需要在某个给定的程序中渲染它,并拍摄它的快照。 我不知道.NET,但这里有一些工具可供查看。

答案 1 :(得分:2)

我刚刚发现了网站 browsershots.org ,它为一大堆不同的浏览器生成屏幕截图。在某种程度上,您甚至可以指定分辨率。

答案 2 :(得分:1)

我在VB.NET中编写了一个程序来完成你指定的程序,除了屏幕尺寸问题。

我在我的表单上嵌入了一个Web控件(查看所有控件的最底部),并调整了它的设置(隐藏滚动)。我使用计时器等待动态内容,然后我使用“copyFromScreen”来获取图像。

我的程序有动态尺寸(可通过命令行设置)。我发现,如果我让我的程序大于屏幕,图像将返回关闭屏幕区域的黑色像素。当时我的工作完成,我没有进一步研究。

希望能给你一个良好的开端。对不起任何错误的措辞。我登录窗口每两个月只开发一次。

答案 3 :(得分:0)

以屏幕截图进行操作可能会变得很难看。使用wget捕获页面的整个内容很容易,但图像意味着捕获渲染。

这是some tools声称可以做到的。

答案 4 :(得分:0)

这是以编程方式创建屏幕截图的代码:


using System.Drawing.Imaging;


int screenWidth = Screen.GetBounds(new Point(0, 0)).Width;
int screenHeight = Screen.GetBounds(new Point(0, 0)).Height;
Bitmap bmpScreenShot = new Bitmap(screenWidth, screenHeight);
Graphics gfx = Graphics.FromImage((Image)bmpScreenShot);
gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight));
bmpScreenShot.Save("test.jpg", ImageFormat.Jpeg);

答案 5 :(得分:0)

您可以在WebBrowser控件上渲染它,然后拍摄快照,如果页面大小超过屏幕大小,您必须滚动控制拍摄一个或多个快照,然后合并所有图片:)

答案 6 :(得分:0)

WebSite的Java ScreenShots

Combine Screens一起用于最终整个网页截图。

// here tableView refers to searchTableView

extension SearchViewController: UISearchResultsUpdating {
    func updateSearchResultsForSearchController(searchController: UISearchController) {
        tableView.hidden = false
        filterData(text: searchController.searchBar.text!)
        tableView.reloadData()
    }
}