C#實現網頁截圖功能

iDotNetSpace發表於2009-11-25
//需要新增System.Drawing及System.Windows.Forms引用  
using System;  
using System.Drawing;  
using System.Drawing.Drawing2D;  
using System.Drawing.Imaging;  
using System.Windows.Forms;  
 
 
namespace 網頁截圖  
{  
    class Program  
    {  
        [STAThread]  
        static void Main(string[] args)  
        {  
            string url = "http://www.yongfa365.com/";  
            MyLib.GetImage thumb = new MyLib.GetImage(url, 1024, 4000, 1024, 4000);  
            System.Drawing.Bitmap x = thumb.GetBitmap();  
            string FileName = DateTime.Now.ToString("yyyyMMddhhmmss");  
 
            x.Save(@"C:\" + FileName + ".jpg");  
            Console.WriteLine("成功");  
            Console.ReadKey();  
        }  
    }  
}  
 
 
 
 
 
namespace MyLib  
{  
    public class GetImage  
    {  
        private int S_Height;  
        private int S_Width;  
        private int F_Height;  
        private int F_Width;  
        private string MyURL;  
 
        public int ScreenHeight  
        {  
            get { return S_Height; }  
            set { S_Height = value; }  
        }  
 
        public int ScreenWidth  
        {  
            get { return S_Width; }  
            set { S_Width = value; }  
        }  
 
        public int ImageHeight  
        {  
            get { return F_Height; }  
            set { F_Height = value; }  
        }  
 
        public int ImageWidth  
        {  
            get { return F_Width; }  
            set { F_Width = value; }  
        }  
 
        public string WebSite  
        {  
            get { return MyURL; }  
            set { MyURL = value; }  
        }  
 
        public GetImage(string WebSite, int ScreenWidth, int ScreenHeight, int ImageWidth, int ImageHeight)  
        {  
            this.WebSite = WebSite;  
            this.ScreenWidth = ScreenWidth;  
            this.ScreenHeight = ScreenHeight;  
            this.ImageHeight = ImageHeight;  
            this.ImageWidth = ImageWidth;  
        }  
 
        public Bitmap GetBitmap()  
        {  
            WebPageBitmap Shot = new WebPageBitmap(this.WebSite, this.ScreenWidth, this.ScreenHeight);  
            Shot.GetIt();  
            Bitmap Pic = Shot.DrawBitmap(this.ImageHeight, this.ImageWidth);  
            return Pic;  
        }  
    }  
 
    class WebPageBitmap  
    {  
        WebBrowser MyBrowser;  
        string URL;  
        int Height;  
        int Width;  
 
        public WebPageBitmap(string url, int width, int height)  
        {  
            this.Height = height;  
            this.Width = width;  
            this.URL = url;  
            MyBrowser = new WebBrowser();  
            MyBrowser.ScrollBarsEnabled = false;  
            MyBrowser.Size = new Size(this.Width, this.Height);  
        }  
 
        public void GetIt()  
        {  
            MyBrowser.Navigate(this.URL);  
            while (MyBrowser.ReadyState != WebBrowserReadyState.Complete)  
            {  
                Application.DoEvents();  
            }  
        }  
 
        public Bitmap DrawBitmap(int theight, int twidth)  
        {  
            Bitmap myBitmap = new Bitmap(Width, Height);  
            Rectangle DrawRect = new Rectangle(0, 0, Width, Height);  
            MyBrowser.DrawToBitmap(myBitmap, DrawRect);  
            System.Drawing.Image imgOutput = myBitmap;  
            System.Drawing.Image ThumbNail = new Bitmap(twidth, theight, imgOutput.PixelFormat);  
            Graphics g = Graphics.FromImage(oThumbNail);  
            g.CompositingQuality = CompositingQuality.HighSpeed;  
            g.SmoothingMode = SmoothingMode.HighSpeed;  
            g.InterpolationMode = InterpolationMode.HighQualityBilinear;  
            Rectangle Rectangle = new Rectangle(0, 0, twidth, theight);  
            g.DrawImage(imgOutput, oRectangle);  
            try  
            {  
                return (Bitmap)oThumbNail;  
            }  
            catch (Exception ex)  
            {  
                return null;  
            }  
            finally  
            {  
                imgOutput.Dispose();  
                imgOutput = null;  
                MyBrowser.Dispose();  
                MyBrowser = null;  
            }  
        }  
    }  
 
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-620521/,如需轉載,請註明出處,否則將追究法律責任。

相關文章