Rubrik: HTML/Internet/Netzwerk · WebBrowser | VB-Versionen: VB2005, VB2008 | 22.02.10 |
Snapshot einer kompletten Internetseite Ein kleines Beispiel, wie man eine komplette Intenetseite "fotografieren" und abspeichern kann. | ||
Autor: Mario Weichert | Bewertung: | Views: 11.835 |
www.pixcore.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Hier einmal ein kleines Beispiel, wie man den Inhalt einer ganzen Internetseite als Bild festhalten kann.
Auf eine visuelle Darstellung der Internetseite in einem WebBroser Control wird hier verzichtet.
Fangen wir an...
Als erstes fügen wir unserer Anwendung folgende Deklaration hinzu:
Imports System.Drawing Imports System.Drawing.Imaging Imports System.Windows.Forms
Als nächstes schreiben wir eine Public Function, um den Code von überall aus unserer Anwendung aufrufen zu können. Nennen wir unsere Funktion mal "Webshot":
''' <summary> ''' Erstellt einen Snapshot vom Inhalt einer beliebigen Webseite ''' </summary> ''' <param name="URL">URl der Webseite</param> ''' <returns>Bitmap-Objekt mit dem Inhalt der Webseite als Bild</returns> Private Function WebShot(ByVal URL As String) As Bitmap ' Neues WebBrowser-Objekt erstellen Dim wb As New WebBrowser() With wb ' Scrollbars ausblenden .ScrollBarsEnabled = False ' Fehlermeldungen unterdrücken .ScriptErrorsSuppressed = True ' URL aufrufen .Navigate(URL) ' Warten, bis Seite geladen ist While .ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While ' Größe des Browserfensters festlegen .Width = .Document.Body.ScrollRectangle.Width .Height = .Document.Body.ScrollRectangle.Height ' Bitmap in der festgelegten Größe erstellen Dim bitmap As New Bitmap(.Width, .Height) ' Inhalt des WebBroewsers als Bitmap speichern .DrawToBitmap(bitmap, New Rectangle(0, 0, .Width, .Height)) ' Ressourcen freigeben .Dispose() ' Bitmap-Objekt zurückgeben Return (bitmap) End With End Function
Die Funktion lädt die Internetseite in ein unsichtbares WebBrowser-Control, erstellt einen Snapshot und gibt das Bild dann als Bitmap-Objekt zurück.
Den Snapshot kann man dann bspw. in einem PictureBox-Control wie folgt anzeigen...
Me.Cursor = Cursors.WaitCursor PictureBox1.Image = WebShot("http://www....") Me.Cursor = Cursors.Default... oder auch direkt als Bilddatei abspeichern:
Me.Cursor = Cursors.WaitCursor With WebShot("http://www....") .Save("d:\temp\test.jpg", Imaging.ImageFormat.Jpeg) End With Me.Cursor = Cursors.Default