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/

  • 相关阅读:
    c:forTokens标签循环输出
    jsp转long类型为date,并且格式化
    spring中@Param和mybatis中@Param使用区别(暂时还没接触)
    734. Sentence Similarity 有字典数组的相似句子
    246. Strobogrammatic Number 上下对称的数字
    720. Longest Word in Dictionary 能连续拼接出来的最长单词
    599. Minimum Index Sum of Two Lists两个餐厅列表的索引和最小
    594. Longest Harmonious Subsequence强制差距为1的最长连续
    645. Set Mismatch挑出不匹配的元素和应该真正存在的元素
    409. Longest Palindrome 最长对称串
  • 原文地址:https://www.cnblogs.com/duhaoran/p/13600934.html
Copyright © 2011-2022 走看看