手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#根据网址抓取网页截屏生成图片的示例
c#根据网址抓取网页截屏生成图片的示例
摘要:复制代码代码如下:usingSystem.Drawing;usingSystem.Drawing.Imaging;usingSystem.I...

复制代码 代码如下:

using System.Drawing;

using System.Drawing.Imaging;

using System.IO;

using System.Threading;

using System.Windows.Forms;

public class WebsiteToImage

{

private Bitmap m_Bitmap;

private string m_Url;

private string m_FileName = string.Empty;

public WebsiteToImage(string url)

{

// Without file

m_Url = url;

}

public WebsiteToImage(string url, string fileName)

{

// With file

m_Url = url;

m_FileName = fileName;

}

public Bitmap Generate()

{

// Thread

var m_thread = new Thread(_Generate);

m_thread.SetApartmentState(ApartmentState.STA);

m_thread.Start();

m_thread.Join();

return m_Bitmap;

}

private void _Generate()

{

var browser = new WebBrowser { ScrollBarsEnabled = false };

browser.Navigate(m_Url);

browser.DocumentCompleted += WebBrowser_DocumentCompleted;

while (browser.ReadyState != WebBrowserReadyState.Complete)

{

Application.DoEvents();

}

browser.Dispose();

}

private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{

// Capture

var browser = (WebBrowser)sender;

browser.ClientSize = new Size(browser.Document.Body.ScrollRectangle.Width, browser.Document.Body.ScrollRectangle.Bottom);

browser.ScrollBarsEnabled = false;

m_Bitmap = new Bitmap(browser.Document.Body.ScrollRectangle.Width, browser.Document.Body.ScrollRectangle.Bottom);

browser.BringToFront();

browser.DrawToBitmap(m_Bitmap, browser.Bounds);

// Save as file?

if (m_FileName.Length > 0)

{

// Save

m_Bitmap.SaveJPG100(m_FileName);

}

}

}

public static class BitmapExtensions

{

public static void SaveJPG100(this Bitmap bmp, string filename)

{

var encoderParameters = new EncoderParameters(1);

encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);

bmp.Save(filename, GetEncoder(ImageFormat.Jpeg), encoderParameters);

}

public static void SaveJPG100(this Bitmap bmp, Stream stream)

{

var encoderParameters = new EncoderParameters(1);

encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);

bmp.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters);

}

public static ImageCodecInfo GetEncoder(ImageFormat format)

{

var codecs = ImageCodecInfo.GetImageDecoders();

foreach (var codec in codecs)

{

if (codec.FormatID == format.Guid)

{

return codec;

}

}

// Return

return null;

}

}

调用方式如下:

复制代码 代码如下:

WebsiteToImage websiteToImage = new WebsiteToImage( "http://www.jb51.net", @"D:Some Folderkeleyi.jpg");

websiteToImage.Generate();

这种方式使用了WebBrowser控件,所以必须引用 System.Windows.Forms 命名空间。

【c#根据网址抓取网页截屏生成图片的示例】相关文章:

读取图片像素的具体实例

C#生成影像金字塔的原理实例

C# 获取系统进程的用户名

c#图片添加水印的实例代码

C#根据年月日计算星期几的函数小例子

c# 抓取Web网页数据分析

C#生成随机字符串的实例

c# 控件截图的简单实例

c#高效比对大量图片的实例代码

C#数据结构之循环链表的实例代码

精品推荐
分类导航