C#實現HTML轉圖片(網頁快照)


  有時候我們需要將網頁轉成圖片,那么可以使用WebBrowser來生成網頁快照,廢話不多說,代碼如下

 1、網頁快照幫助類(如果是BS或控制台需要引用System.Windows.Forms類庫):

 1     public class WebSnapshotsHelper
 2     {
 3         Bitmap m_Bitmap;
 4         string m_Url;
 5         int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;
 6         public WebSnapshotsHelper(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
 7         {
 8             m_Url = Url;
 9             m_BrowserHeight = BrowserHeight;
10             m_BrowserWidth = BrowserWidth;
11             m_ThumbnailWidth = ThumbnailWidth;
12             m_ThumbnailHeight = ThumbnailHeight;
13         }
14         public static Bitmap GetWebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
15         {
16             WebSnapshotsHelper thumbnailGenerator = new WebSnapshotsHelper(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);
17             return thumbnailGenerator.GenerateWebSiteThumbnailImage();
18         }
19         public Bitmap GenerateWebSiteThumbnailImage()
20         {
21             Thread m_thread = new Thread(new ThreadStart(_GenerateWebSiteThumbnailImage));
22             m_thread.SetApartmentState(ApartmentState.STA);
23             m_thread.Start();
24             m_thread.Join();
25             return m_Bitmap;
26         }
27         private void _GenerateWebSiteThumbnailImage()
28         {
29             WebBrowser m_WebBrowser = new WebBrowser();
30             m_WebBrowser.ScrollBarsEnabled = false;
31             m_WebBrowser.Navigate(m_Url);
32             m_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
33             while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)
34                 Application.DoEvents();
35             m_WebBrowser.Dispose();
36         }
37         private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
38         {
39             WebBrowser m_WebBrowser = (WebBrowser)sender;
40             m_WebBrowser.ClientSize = new Size(this.m_BrowserWidth, this.m_BrowserHeight);
41             m_WebBrowser.ScrollBarsEnabled = false;
42             m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);
43             m_WebBrowser.BringToFront();
44             m_WebBrowser.DrawToBitmap(m_Bitmap, m_WebBrowser.Bounds);
45             m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(m_ThumbnailWidth, m_ThumbnailHeight, null, IntPtr.Zero);
46         }
47 
48     }

2、調用:

1 Bitmap m_Bitmap = WebSnapshotsHelper.GetWebSiteThumbnail("http://www.cnblogs.com/", 800, 1200, 800, 1200); //寬高根據要獲取快照的網頁決定
2 m_Bitmap.Save("render_img.bmp", System.Drawing.Imaging.ImageFormat.Bmp); //圖片格式可以自由控制

3、效果:

這個可以在 html頁面以一張圖片為背景,在其中填空,最后調用此Helper方法來生成圖片。

最后說一下:這個使用的是WebBrowser為核心,所以生成的html會根據IE內核來渲染,如果頁面中使用到了HTML5、CSS3,那推薦部署的服務器裝有IE10及以上瀏覽器,由於是在服務端生成,對客戶端瀏覽器是沒有限制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM