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

所属分类: 软件编程 / C#教程 阅读数: 61
收藏 0 赞 0 分享

本文实例讲述了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#程序设计有所帮助。

更多精彩内容其他人还在看

C# SendInput 模拟鼠标操作的实现方法

C# SendInput 模拟鼠标操作的实现方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中 paint()与Onpaint()的区别

paint是事件onpaint方法onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的:
收藏 0 赞 0 分享

c#中GetType()与Typeof()的区别

c#中GetType()与Typeof()的区别,需要的朋友可以参考一下
收藏 0 赞 0 分享

将字符串转换成System.Drawing.Color类型的方法

将字符串转换成System.Drawing.Color类型的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# 抓取网页内容的方法

C# 抓取网页内容的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

基于C#后台调用跨域MVC服务及带Cookie验证的实现

本篇文章介绍了,基于C#后台调用跨域MVC服务及带Cookie验证的实现。需要的朋友参考下
收藏 0 赞 0 分享

使用C#获取远程图片 Form用户名与密码Authorization认证的实现

本篇文章介绍了,使用C#获取远程图片 Form用户名与密码Authorization认证的实现。需要的朋友参考下
收藏 0 赞 0 分享

Winform跨线程操作的简单方法

线程间操作无效:从不是创建控件“label1”的线程访问它
收藏 0 赞 0 分享

C# WINFORM 强制让窗体获得焦点的方法代码

C# WINFORM 强制让窗体获得焦点的方法代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中方括号[]的语法及作用介绍

C#中方括号[]可用于数组,索引、属性,更重要的是用于外部DLL类库的引用。
收藏 0 赞 0 分享
查看更多