標籤:
1.使用System.Windows.Forms命名空間下的WebBrowser控制項載入網頁並產生圖片
GiHub參考地址:
https://github.com/tianma3798/FileOparate/
使用方法:
public static void TestOne(){ ThumbnailImg img = new ThumbnailImg("e:\\one.png"); //img.SetToJpeg(); //img.SetToGif(); ThumbnailOperate _operate = new ThumbnailOperate("http://korea.weilanliuxue.cn", img); _operate.GenerateImg(); Console.WriteLine("儲存成功");}
核心代碼類:
/// <summary> /// 網頁產生產生圖片協助類 /// </summary> public class Thumbnail { /// <summary> /// 網頁產生的圖片 /// </summary> private Bitmap _bitmap; private string _url; private int _browserWidth, _browserHeight, _tWidth, _tHeight; /// <summary> /// 是否使用,指定的寬度和高度 /// </summary> public bool IsCustumer { get; set; } /// <summary> /// 指定網頁地址,使用頁面的body的高度 /// 產生圖片的,寬度和高度與body相同 /// </summary> /// <param name="url">網頁地址</param> /// <param name="browserWidth">瀏覽器寬度</param> public Thumbnail(string url, int browserWidth) { IsCustumer = false; _url = url; _browserWidth = browserWidth; } /// <summary> /// 初始化構造 /// </summary> /// <param name="url">網頁地址</param> /// <param name="browserWidth">瀏覽器寬度</param> /// <param name="browserHeight">瀏覽器高度</param> /// <param name="tWidth">產生圖片寬度</param> /// <param name="tHeight">產生圖片高度</param> public Thumbnail(string url, int browserWidth, int browserHeight, int tWidth, int tHeight) { IsCustumer = true; _url = url; _browserWidth = browserWidth; _browserHeight = browserHeight; _tWidth = tWidth; _tHeight = tHeight; } /// <summary> /// 擷取網頁的圖片 /// </summary> /// <param name="url">網頁地址</param> /// <param name="browserWidth">瀏覽器寬度</param> /// <param name="browserHeight">瀏覽器高度</param> /// <param name="tWidth">產生圖片寬度</param> /// <param name="tHeight">產生圖片高度</param> public static Bitmap GetThumbnail(string url, int browserWidth, int browserHeight, int tWidth, int tHeight) { Thumbnail thumb = new Thumbnail(url, browserWidth, browserHeight, tWidth, tHeight); return thumb.GenerateImage(); } /// <summary> /// 產生圖片資訊 /// </summary> /// <returns></returns> public Bitmap GenerateImage() { Thread thread = new Thread(new ThreadStart(_GenerateImage)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); return _bitmap; } /// <summary> /// 使用WebBrowser產生圖片 /// </summary> private void _GenerateImage() { WebBrowser browser = new WebBrowser(); browser.ScrollBarsEnabled = false; browser.ScriptErrorsSuppressed = false; browser.Navigate(_url); browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(_DocumentCompleted); while (browser.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); browser.Dispose(); } /// <summary> /// 頁面載入完成事件 /// </summary> private void _DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { WebBrowser browser = sender as WebBrowser; if (IsCustumer) { //產生自訂寬度和高度的圖片 browser.ClientSize = new Size(_browserWidth, _browserHeight); _bitmap = new Bitmap(browser.Bounds.Width, browser.Bounds.Height); browser.DrawToBitmap(_bitmap, browser.Bounds); _bitmap = (Bitmap)_bitmap.GetThumbnailImage(_tWidth, _tHeight, null, IntPtr.Zero); } else { //產生預設body寬度和高度的圖片(最常用) _browserHeight = 5000; if (browser.Document.Body != null) { _browserHeight = browser.Document.Body.OffsetRectangle.Height; browser.ClientSize = new Size(_browserWidth, _browserHeight); Rectangle bodyRect = browser.Document.Body.OffsetRectangle; _bitmap = new Bitmap(_browserWidth, bodyRect.Height); browser.BringToFront(); browser.DrawToBitmap(_bitmap, bodyRect); _bitmap = (Bitmap)_bitmap.GetThumbnailImage(_browserWidth, bodyRect.Height, null, IntPtr.Zero); } else { browser.ClientSize = new Size(_browserWidth, _browserHeight); _bitmap = new Bitmap(_browserWidth, _browserHeight); browser.BringToFront(); browser.DrawToBitmap(_bitmap, new Rectangle(0,0,_browserWidth,_browserHeight)); _bitmap = (Bitmap)_bitmap.GetThumbnailImage(_browserWidth, _browserHeight, null, IntPtr.Zero); } //_bitmap = (Bitmap)_bitmap.GetThumbnailImage(bodyRect.Width, bodyRect.Height, null, IntPtr.Zero); } } }
C# Html網頁產生圖片解決方案1