好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#实现在网页中根据url截图并输出到网页的方法

本文实例讲述了C#实现在网页中根据url截图并输出到网页的方法。分享给大家供大家参考,具体如下:

网页截图是很多站点的一个小需求,这段代码实现的是如何根据url获得网页截图并输出到网页中。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Threading;

using System.Windows.Forms;

using System.Drawing;

using System.IO;

/// <summary>

/// This page show the way of generate a image in website

/// </summary>

public partial class Default2 : System.Web.UI.Page

{

   protected void Page_Load( object sender, EventArgs e)

   {

     Bitmap m_Bitmap = WebSiteThumbnail.GetWebSiteThumbnail( "http://www.google.cn" , 600, 600, 600, 600);

     MemoryStream ms = new MemoryStream();

     m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); //JPG、GIF、PNG等均可 

     byte [] buff = ms.ToArray();

     Response.BinaryWrite(buff);

   }

}

public class WebSiteThumbnail

{

   Bitmap m_Bitmap;

   string m_Url;

   int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;

   public WebSiteThumbnail( string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)

   {

     m_Url = Url;

     m_BrowserHeight = BrowserHeight;

     m_BrowserWidth = BrowserWidth;

     m_ThumbnailWidth = ThumbnailWidth;

     m_ThumbnailHeight = ThumbnailHeight;

   }

   public static Bitmap GetWebSiteThumbnail( string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)

   {

     WebSiteThumbnail thumbnailGenerator = new WebSiteThumbnail(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);

     return thumbnailGenerator.GenerateWebSiteThumbnailImage();

   }

   public Bitmap GenerateWebSiteThumbnailImage()

   {

     Thread m_thread = new Thread( new ThreadStart(_GenerateWebSiteThumbnailImage));

     m_thread.SetApartmentState(ApartmentState.STA);

     m_thread.Start();

     m_thread.Join();

     return m_Bitmap;

   }

   private void _GenerateWebSiteThumbnailImage()

   {

     WebBrowser m_WebBrowser = new WebBrowser();

     m_WebBrowser.ScrollBarsEnabled = false ;

     m_WebBrowser.Navigate(m_Url);

     m_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);

     while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)

       Application.DoEvents();

     m_WebBrowser.Dispose();

   }

   private void WebBrowser_DocumentCompleted( object sender, WebBrowserDocumentCompletedEventArgs e)

   {

     WebBrowser m_WebBrowser = (WebBrowser)sender;

     m_WebBrowser.ClientSize = new Size( this .m_BrowserWidth, this .m_BrowserHeight);

     m_WebBrowser.ScrollBarsEnabled = false ;

     m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);

     m_WebBrowser.BringToFront();

     m_WebBrowser.DrawToBitmap(m_Bitmap, m_WebBrowser.Bounds);

     m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(m_ThumbnailWidth, m_ThumbnailHeight, null , IntPtr.Zero);

   }

}

希望本文所述对大家C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#实现在网页中根据url截图并输出到网页的方法的详细内容...

  阅读:74次