Ref
http://www.aspsnippets.com/Articles/Capture-Screenshot-Snapshot-Image-of-Website-Web-Page-in-ASPNet-using-C-and-VBNet.aspx
HTML
<asp:TextBox ID="txtUrl" runat="server" Text="" />
<asp:Button Text="Capture" runat="server" OnClick="Capture" />
<br />
<asp:Image ID="imgScreenShot" runat="server" Height="500" Width="700" Visible="false" />
<br />
<asp:Button Text="Download Image" OnClick="DownLoadImage" runat="server" />
<asp:Button Text="Send Email" OnClick="SendEmail" runat="server" />
Namespaces
using System.IO;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using System.Net.Mail;
using System.Net;
C#
protected void Capture(object sender, EventArgs e)
{
string url = txtUrl.Text.Trim();
Thread thread = new Thread(delegate()
{
using (WebBrowser browser = new WebBrowser())
{
browser.ScrollBarsEnabled = false;
browser.AllowNavigation = true;
browser.Navigate(url);
browser.Width = 1024;
browser.Height = 768;
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentCompleted);
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
}
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser browser = sender as WebBrowser;
using (Bitmap bitmap = new Bitmap(browser.Width, browser.Height))
{
browser.DrawToBitmap(bitmap, new Rectangle(0, 0, browser.Width, browser.Height));
using (MemoryStream stream = new MemoryStream())
{
bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
byte[] bytes = stream.ToArray();
imgScreenShot.Visible = true;
imgScreenShot.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(bytes);
}
}
}
// Downloading the image
protected void DownLoadImage(object sender, EventArgs e)
{
byte[] bytes = Convert.FromBase64String(imgScreenShot.ImageUrl.Split(',')[1]);
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "image/png";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + "abc.png");
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
//Send the image as attachment
protected void SendEmail(object sender, EventArgs e)
{
using (MailMessage mm = new MailMessage("From@email.com", "To@email.com"))
{
mm.Subject = "";
mm.Body = "";
MemoryStream memoryStream = new MemoryStream();
byte[] contentAsBytes = Convert.FromBase64String(this.imgScreenShot.ImageUrl.Split(',')[1]);
memoryStream.Write(contentAsBytes, 0, contentAsBytes.Length);
// Set the position to the beginning of the stream.
memoryStream.Seek(0, SeekOrigin.Begin);
Attachment attachment = new Attachment(memoryStream, "image/png");
mm.IsBodyHtml = false;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential("UserName@123.com", "Password");
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
}
}
Image Email sending is not tested. Please check it.