c#根據(jù)網(wǎng)址抓取網(wǎng)頁(yè)截屏生成圖片的示例
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;
}
}
調(diào)用方式如下:
WebsiteToImage websiteToImage = new WebsiteToImage( "http://www.dbjr.com.cn", @"D:\Some Folder\keleyi.jpg");
websiteToImage.Generate();
這種方式使用了WebBrowser控件,所以必須引用 System.Windows.Forms 命名空間。
- C#多線程爬蟲(chóng)抓取免費(fèi)代理IP的示例代碼
- c# 抓取Web網(wǎng)頁(yè)數(shù)據(jù)分析
- C# 抓取網(wǎng)頁(yè)內(nèi)容的方法
- C# 實(shí)現(xiàn)抓取網(wǎng)站頁(yè)面內(nèi)容的實(shí)例方法
- c# HttpWebRequest通過(guò)代理服務(wù)器抓取網(wǎng)頁(yè)內(nèi)容應(yīng)用介紹
- C#實(shí)現(xiàn)通過(guò)程序自動(dòng)抓取遠(yuǎn)程Web網(wǎng)頁(yè)信息的代碼
- asp.net c# 抓取頁(yè)面信息方法介紹
- 基于C#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng) C#抓取網(wǎng)頁(yè)Html源碼
- C#實(shí)現(xiàn)抓取和分析網(wǎng)頁(yè)類實(shí)例
- c#批量抓取免費(fèi)代理并且驗(yàn)證有效性的實(shí)戰(zhàn)教程
相關(guān)文章
C# .NET中Socket簡(jiǎn)單實(shí)用框架的使用教程
最近一個(gè)項(xiàng)目因?yàn)橐玫絊ocket傳輸問(wèn)題,所以決定學(xué)習(xí)一下,將自己學(xué)習(xí)的內(nèi)容總結(jié)分享出來(lái),下面這篇文章主要給大家介紹了關(guān)于C# .NET中Socket簡(jiǎn)單實(shí)用框架使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-09-09在Form_Load里面調(diào)用Focus無(wú)效的解決方法
在調(diào)用Form_Load的時(shí)候,F(xiàn)orm其實(shí)還沒(méi)有進(jìn)入展示階段,自然Focus()調(diào)用也就沒(méi)效果了。2013-02-02Silverlight將圖片轉(zhuǎn)換為byte的實(shí)現(xiàn)代碼
這篇文章主要介紹了Silverlight將圖片轉(zhuǎn)換為byte的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-11-11C#創(chuàng)建數(shù)據(jù)庫(kù)及附加數(shù)據(jù)庫(kù)的操作方法
這篇文章主要介紹了C#創(chuàng)建數(shù)據(jù)庫(kù)及附加數(shù)據(jù)庫(kù)的操作方法,涉及C#針對(duì)數(shù)據(jù)庫(kù)常見(jiàn)的創(chuàng)建、添加、連接等操作技巧,需要的朋友可以參考下2016-06-06Unity?UGUI的VerticalLayoutGroup垂直布局組件介紹使用
這篇文章主要為大家介紹了Unity?UGUI的VerticalLayoutGroup垂直布局組件介紹使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07C#使用doggleReport生成pdf報(bào)表的方法
這篇文章主要介紹了C#使用doggleReport生成pdf報(bào)表的方法,結(jié)合實(shí)例形式分析了C# doggleReport安裝及使用具體操作技巧,需要的朋友可以參考下2017-06-06C#實(shí)現(xiàn)獲取計(jì)算機(jī)信息的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)獲取計(jì)算機(jī)軟硬件信息的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-01-01unity scrollRect實(shí)現(xiàn)按頁(yè)碼翻頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了unity scrollRect實(shí)現(xiàn)按頁(yè)碼翻頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04