I was doing some research recently on generating screenshots of web pages using an ASP.NET page and found a link to a post on DotNetClassic.com that appears to disappeared into the ether…
Thanks to the magic of the WayBackMachine, this code lives on. I haven’t tried it yet but present it for your edification and amusement:
Imports System Imports System.Drawing Imports System.Drawing.Imaging Imports System.Windows.Forms Imports System.Diagnostics Namespace GetSiteThumbnail Public Class GetImage Private S_Height As Integer Private S_Width As Integer Private F_Height As Integer Private F_Width As Integer Private MyURL As String Property ScreenHeight() As Integer Get Return S_Height End Get Set(ByVal value As Integer) S_Height = value End Set End Property Property ScreenWidth() As Integer Get Return S_Width End Get Set(ByVal value As Integer) S_Width = value End Set End Property Property ImageHeight() As Integer Get Return F_Height End Get Set(ByVal value As Integer) F_Height = value End Set End Property Property ImageWidth() As Integer Get Return F_Width End Get Set(ByVal value As Integer) F_Width = value End Set End Property Property WebSite() As String Get Return MyURL End Get Set(ByVal value As String) MyURL = value End Set End Property Sub New(ByVal WebSite As String, ByVal ScreenWidth As Integer, ByVal ScreenHeight As Integer, ByVal ImageWidth As Integer, ByVal ImageHeight As Integer) Me.WebSite = WebSite Me.ScreenWidth = ScreenWidth Me.ScreenHeight = ScreenHeight Me.ImageHeight = ImageHeight Me.ImageWidth = ImageWidth End Sub Function GetBitmap() As Bitmap Dim Shot As New WebPageBitmap(Me.WebSite, Me.ScreenWidth, Me.ScreenHeight) Shot.GetIt() Dim Pic As Bitmap = Shot.DrawBitmap(Me.ImageHeight, Me.ImageWidth) Return Pic End Function End Class Class WebPageBitmap Dim MyBrowser As WebBrowser Dim URL As String Dim Height As Integer Dim Width As Integer Sub New(ByVal url As String, ByVal width As Integer, ByVal height As Integer) Me.Height = Height Me.Width = width Me.URL = url MyBrowser = New WebBrowser MyBrowser.ScrollBarsEnabled = False MyBrowser.Size = New Size(Me.Width, Me.Height) End Sub Sub GetIt() MyBrowser.Navigate(Me.URL) While MyBrowser.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While End Sub Function DrawBitmap(ByVal theight As Integer, ByVal twidth As Integer) As Bitmap Dim myBitmap As New Bitmap(Width, Height) Dim DrawRect As New Rectangle(0, 0, Width, Height) MyBrowser.DrawToBitmap(myBitmap, DrawRect) Dim imgOutput As System.Drawing.Image = myBitmap Dim oThumbNail As System.Drawing.Image = New Bitmap(twidth, theight, imgOutput.PixelFormat) Dim g As Graphics = Graphics.FromImage(oThumbNail) g.CompositingQuality = Drawing2D.CompositingQuality.HighSpeed g.SmoothingMode = Drawing2D.SmoothingMode.HighSpeed g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear Dim oRectangle As Rectangle = New Rectangle(0, 0, twidth, theight) g.DrawImage(imgOutput, oRectangle) Try Return oThumbNail Catch ex As Exception Finally imgOutput.Dispose() imgOutput = Nothing MyBrowser.Dispose() MyBrowser = Nothing End Try Return Nothing End Function End Class End Namespace
And it would be called thusly:
'// First start a thread NewTh.SetApartmentState(Threading.ApartmentState.STA) NewTh.Start() timer1.Interval = 60000 '60 sec timer1.Start() timer1.Enabled = True While NewTh.ThreadState = Threading.ThreadState.Running '/////////////////////////////////////// Sub DoIT() Try Dim thumb As New GetSiteThumbnail.GetImage(url.Replace(" ", ""), 1024, 768, 109, 82) Dim x As System.Drawing.Bitmap = thumb.GetBitmap() x.Save(Server.MapPath("./SiteThumb/1.jpg") Catch ex As Exception Response.Write(ex.Message & vbCrLf & ex.Source) Finally End Try End Sub
I’ll report back after I’ve had a chance to test this out and see how she works…
Latest posts by Michael Gibbs (see all)
- Setting up SSL on Amazon Linux Instance under EC2 - July 26, 2018
- Method Chaining of Objects in C# - January 16, 2017
- Native SQL Backup And Restores on AWS RDS - November 9, 2016