65.9K
CodeProject 正在变化。 阅读更多。
Home

捕获整个网页

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.56/5 (31投票s)

2007年8月6日

viewsIcon

169148

downloadIcon

10628

捕获整个网页并将其保存为图像。


Screenshot - gui2_animated.gif

更新

- 2007.08.15 - 用户自定义图像格式、保存路径、基本文件名、文本叠加/水印以及屏幕分辨率指南...以及一些其他待实现的想法。

引言

我见过其他文章描述了如何完成此操作,但无法让任何一个在 Internet Explorer 7 上正常工作。这是一个简单的示例,它捕获一个网页,包括折叠下方元素,并将其保存为图像。以下是您将看到的内容

Screenshot - httpwwwcodeprojectcom.png
请注意,此图已被调整大小,捕获的图像是实际大小。

使用代码

此示例仅包含基本功能。图像将作为 PNG 格式保存在与 exe 文件相同的目录中。保存为不同的图像格式、可变暂停以及给定的文件名应该相对容易添加。

Private Sub GetImage()
    If WebBrowser1.Document Is Nothing Then
        Return
    End If
    Try
        Dim scrollWidth As Integer
        Dim scrollHeight As Integer
        scrollHeight = WebBrowser1.Document.Body.ScrollRectangle.Height
        scrollWidth = WebBrowser1.Document.Body.ScrollRectangle.Width
        WebBrowser1.Size = New Size(scrollWidth, scrollHeight)
        Dim bm As New Bitmap(scrollWidth, scrollHeight)
        WebBrowser1.DrawToBitmap(bm, New Rectangle(0, 0, bm.Width, bm.Height))
        Dim SaveAsName As String
        SaveAsName = Regex.Replace(textWebURL.Text, "(\\|\/|\:|\*|\?|\""|\<|\>|\|)?", "")
        bm.Save(SaveAsName & ".png", System.Drawing.Imaging.ImageFormat.Png)
        bm.Dispose()
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Finally
        '
    End Try
    buttonCapture.Enabled = True
End Sub

关注点

在文档加载后等待一两秒钟,将允许更多客户端动画/js/等被捕获。如果网页保存为“白色”图像,请尝试上述方法。

环境

Vista / VS2005

© . All rights reserved.