zoukankan      html  css  js  c++  java
  • C# 根据URL获取网页截屏

    1、展示实现效果图

      

      

      当输入对应网址即可生成对应网址裁剪的图片

    2、实现代码

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 网页截图
    {
        class Program
        {
            [STAThread]
            static void Main(string[] args)
            {
                int webWidth = 0;
                int webHeight = 0;
                string url = "http://www.4399.com/";
    
                WebBrowser web = new WebBrowser();
                web.Navigate(url);
                while (web.ReadyState != WebBrowserReadyState.Complete)
                {
                    Application.DoEvents();
                }
    
                //获取网页高度和宽度
                webWidth = web.Document.Body.ScrollRectangle.Width;
                webHeight = web.Document.Body.ScrollRectangle.Height;
    
                GetImage thumb = new GetImage(url, webWidth, webHeight, webWidth, webHeight); // 宽高根据要获取快照的网页决定
                System.Drawing.Bitmap x = thumb.GetBitmap();
                string FileName = DateTime.Now.ToString("yyyyMMddhhmmss");
    
                x.Save(@"D:" + FileName + ".jpg");
                Console.WriteLine("成功");
                Console.ReadKey();
            }
        }
        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;
                }
            }
        }
    }

      源代码:

      链接:https://pan.baidu.com/s/1MxesmlNL2PR0G3OEP-dXCg
      提取码:n1ov

      后续会陆续更新其他资料,喜欢请关注哦!

      我的博客:https://www.cnblogs.com/duhaoran/

  • 相关阅读:
    H3C-路由器密码恢复
    H3C-交换机密码恢复
    H3C-端口镜像
    [洛谷P4234]最小差值生成树
    [BZOJ4003]城池攻占
    [BZOJ1058]报表统计
    [BZOJ1584]Cleaning Up 打扫卫生
    [BZOJ3733]Iloczyn
    [HDU5709]Claris Loves Painting
    [BZOJ5109]大吉大利,晚上吃鸡!
  • 原文地址:https://www.cnblogs.com/duhaoran/p/13600934.html
Copyright © 2011-2022 走看看