zoukankan      html  css  js  c++  java
  • C#实现网页截图功能

    //需要添加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;  
                }  
            }  
        }  
     
    }
  • 相关阅读:
    在博客园里给图片加水印(canvas + drag)
    Chrome开发者工具使用指南
    《古剑奇谭3》千秋戏辅助工具(前端React制作)
    React中useEffect的源码解读
    关于为什么使用React新特性Hook的一些实践与浅见
    使用@babel/preset-typescript取代awesome-typescript-loader和ts-loader
    使用dva改造React旧项目的数据流方案
    在React旧项目中安装并使用TypeScript的实践
    安利一个绘制指引线的JS库leader-line
    微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)
  • 原文地址:https://www.cnblogs.com/top5/p/1610041.html
Copyright © 2011-2022 走看看