C#實現網頁截圖功能

來源:互聯網
上載者:User
//需要添加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 oThumbNail = new Bitmap(twidth, theight, imgOutput.PixelFormat);  
            Graphics g = Graphics.FromImage(oThumbNail);  
            g.CompositingQuality = CompositingQuality.HighSpeed;  
            g.SmoothingMode = SmoothingMode.HighSpeed;  
            g.InterpolationMode = InterpolationMode.HighQualityBilinear;  
            Rectangle oRectangle = 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;  
            }  
        }  
    }  
 
}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.