zoukankan      html  css  js  c++  java
  • C#网页 截图

    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Threading;
    using System.Windows.Forms;
    using System;
    
    namespace ConsoleApp1
    {
        public  class CaptureWebPage
        {
    
            public byte[] picbytes; 
    
            public CaptureWebPage(string url)
            {
                string bmpPath =DateTime.Now.ToString("yyyyMMddHHmmssffff")+".bmp";
                Bitmap bmp = new Bitmap(1000,10000);
                
                makepicture(url);
                bmp = ByteToImage(picbytes);
                bmp.Save(bmpPath);
            }
            private void makepicture(string url)
            {
                Thread thread = new Thread(delegate ()
                {
                    using (WebBrowser browser = new WebBrowser())
                    {
                        browser.ScrollBarsEnabled = true;
                        browser.AllowNavigation = true;
                        browser.Navigate(url);
                        browser.Width = 1024;
                        browser.Height =10000;
                        browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentCompleted);
                        while (browser.ReadyState != WebBrowserReadyState.Complete)
                        {
                            System.Windows.Forms.Application.DoEvents();
                        }
    
                    }
                });
                thread.SetApartmentState(ApartmentState.STA);
                thread.Start();
                thread.Join();
            }
    
            private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                WebBrowser browser = sender as WebBrowser;
                using (Bitmap bitmap = new Bitmap(browser.Width, browser.Height))
                {
                    browser.DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, browser.Width, browser.Height));
                    using (MemoryStream stream = new MemoryStream())
                    {
                        bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                        byte[] bytes = stream.ToArray();
                        picbytes = bytes;
    
                    }
                }
            }
    
            public static Bitmap ByteToImage(byte[] blob)
            {
                MemoryStream mStream = new MemoryStream();
                byte[] pData = blob;
                mStream.Write(pData, 0, Convert.ToInt32(pData.Length));
                Bitmap bm = new Bitmap(mStream, false);
                mStream.Dispose();
                return bm;
            }
        }
    }
  • 相关阅读:
    开发一款即时通讯App,从这几步开始
    即时通讯App怎样才能火?背后的技术原理,可以从这5个角度切入
    快速搭建一个“微视”类短视频 App
    iOS Push详述,了解一下?
    怒刷3000条短视频后,我终于发现网红300万点赞的套路
    如何精准实现OCR文字识别?
    30分钟彻底弄懂flex布局
    渲染管道
    游戏引擎架构Note2
    浮点数的内存表示方法
  • 原文地址:https://www.cnblogs.com/Fred1987/p/11116234.html
Copyright © 2011-2022 走看看