将网页转化为图像(获取指定网址为图像)

1、网页转图像工具

工具下载


 2、核心源码 (适用于winform)

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Windows.Forms;

namespace Sci
{
    class WebPageTool
    {
        /// <summary>
        /// 将指定网页的内容,转化为Bitmap(支持html网页、aspx网页、vue等复杂script脚本的网页测试WebBrowser不支持)
        /// </summary>
        /// <param name="webUrl">待转化的网页</param>
        /// <param name="delay">设置网页载入耗时,延时毫秒等待载入完成</param>
        /// <param name="initWidth">设置图像的初始宽度</param>
        /// <param name="initHeight">设置图像的初始高度</param>
        /// <returns></returns>
        public static Bitmap ToBitmap(string webUrl, int delay = 0, int initWidth = 0, int initHeight = 0, bool fullScrool = true)
        {
            WebBrowser browser = new WebBrowser();

            // 设置浏览器的初始大小
            Rectangle screen = Screen.PrimaryScreen.Bounds; // 获取当前计算机主显示器大小
            browser.Width = screen.Width;
            browser.Height = screen.Height;
            if (initWidth > 0) browser.Width = initWidth;
            if (initHeight > 0) browser.Height = initHeight;

            browser.ScriptErrorsSuppressed = true;      // 关闭页面脚本错误提示

            long startTime = DateTime.Now.Ticks;
            browser.Navigate(webUrl);                   // 打开指定的网页

            // 延时delay毫秒等待页面载入完成
            long nowTime = DateTime.Now.Ticks;
            while (browser.ReadyState != WebBrowserReadyState.Complete || (nowTime - startTime) / 10000 < delay)
            {
                nowTime = DateTime.Now.Ticks;
                Application.DoEvents();

                if ((nowTime - startTime) / 10000 > delay + 3000) break;     // 等待时间超出3秒,则不再等待
            }
            if (browser.Document == null) return null;

            //Rectangle scrollRect = browser.Document.Body.ScrollRectangle; // 获取浏览器滚动区域的整体显示尺寸
            Rectangle scrollRect = browser.Document.Body.ClientRectangle;

            browser.Width = scrollRect.Width;         // 浏览器按内容大小进行显示
            if (fullScrool) browser.Height = scrollRect.Height;
            else scrollRect.Height = browser.Height;
            //browser.ScrollBarsEnabled = false;        // 滚动条不可用

            Rectangle bitmapRect = scrollRect;        // 设置输出的图像尺寸

            ViewObject viewObj = browser.Document.DomDocument as ViewObject;    // 获取网页视图

            // 创建Bitmap
            Bitmap bitmap = new Bitmap(bitmapRect.Width, bitmapRect.Height);
            Graphics g = Graphics.FromImage(bitmap);
            IntPtr handle = g.GetHdc();

            // 绘制视图至Bitmap上
            viewObj.Draw(1, -1, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, handle, ref bitmapRect, ref scrollRect, IntPtr.Zero, 0);

            g.ReleaseHdc(handle);

            return bitmap;
        }

    }

    [ComVisible(true), ComImport()]
    [GuidAttribute("0000010d-0000-0000-C000-000000000046")]
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface ViewObject
    {
        [return: MarshalAs(UnmanagedType.I4)]

        [PreserveSig]
        int Draw(
            [MarshalAs(UnmanagedType.U4)] UInt32 dwDrawAspect,
            int lindex,
            IntPtr pvAspect,
            [In] IntPtr ptd,
            IntPtr hdcTargetDev,
            IntPtr hdcDraw,
            [MarshalAs(UnmanagedType.Struct)] ref Rectangle lprcBounds,
            [MarshalAs(UnmanagedType.Struct)] ref Rectangle lprcWBounds,
            IntPtr pfnContinue,
            [MarshalAs(UnmanagedType.U4)] UInt32 dwContinue);

        //[PreserveSig]
        //int GetColorSet([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect,
        //   int lindex, IntPtr pvAspect, [In] IntPtr ptd,
        //    IntPtr hicTargetDev, [Out] IntPtr ppColorSet);

        //[PreserveSig]
        //int Freeze([In, MarshalAs(UnmanagedType.U4)] int dwDrawAspect,
        //                int lindex, IntPtr pvAspect, [Out] IntPtr pdwFreeze);
        //[PreserveSig]
        //int Unfreeze([In, MarshalAs(UnmanagedType.U4)] int dwFreeze);

        //void SetAdvise([In, MarshalAs(UnmanagedType.U4)] int aspects,
        //  [In, MarshalAs(UnmanagedType.U4)] int advf,
        //  [In, MarshalAs(UnmanagedType.Interface)] IAdviseSink pAdvSink);

        //void GetAdvise([In, Out, MarshalAs(UnmanagedType.LPArray)] int[] paspects,
        //  [In, Out, MarshalAs(UnmanagedType.LPArray)] int[] advf,
        //  [In, Out, MarshalAs(UnmanagedType.LPArray)] IAdviseSink[] pAdvSink);
    }

}

  3、通用插件接口(适用于.net 前端和后端)

调用示例:

Bitmap pic = Sci.WebPageTool.ToBitmap("https://www.baidu.com");
pic.Save("test2.png");
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Sci
{
    /// <summary>
    /// 抓取网页为图像
    /// </summary>
    public class WebPageTool
    {
        //[STAThread]
        /// <summary>
        /// 将指定网页的内容,转化为Bitmap(支持html网页、aspx网页、vue等复杂script脚本的网页测试WebBrowser不支持)
        /// </summary>
        /// <param name="webUrl">待转化的网页</param>
        /// <param name="delay">设置网页载入耗时,延时毫秒等待载入完成</param>
        /// <param name="initWidth">设置图像的初始宽度</param>
        /// <param name="initHeight">设置图像的初始高度</param>
        /// <returns></returns>
        public static Bitmap ToBitmap(string webUrl, int delay = 0, int initWidth = 0, int initHeight = 0, bool fullScrool = true)
        {
            Bitmap pic = null;

            Thread staThread = new Thread(new ThreadStart(() =>
            {
                // 在单线程单元中,执行网页转图片功能
                pic = (Bitmap)CallStatic(ToolAsm(), "WebPage2Bitmap.WebPageTool", "ToBitmap", true, new object[] { webUrl, delay, initWidth, initHeight, fullScrool });
            }));
            staThread.SetApartmentState(ApartmentState.STA); // 创建一个单线程单元(否则报错:当前线程不在单线程单元中,因此无法实例化 ActiveX 控件)
            staThread.Start();  // 启动线程
            staThread.Join();   // 等待线程执行完成

            return pic;
        }

        #region 工具插件

        /// <summary>
        ///  调用工具中的static方法
        /// </summary>
        /// <param name="assembly">Assembly</param>
        /// <param name="args">参数</param>
        /// <returns></returns>
        private static object CallStatic(Assembly assembly, string classFullName, string methodName, bool IsPublic, object[] args)
        {
            Type type = assembly.GetType(classFullName, true, true);	// 获取入口类 或 entryPoint.DeclaringType

            // 调用程序集的静态方法: Type.InvokeMember
            object obj = type.InvokeMember(methodName, BindingFlags.InvokeMethod | (IsPublic ? BindingFlags.Public : BindingFlags.NonPublic) | BindingFlags.Static, null, null, args);
            return obj;
        }

        /// <summary>
        /// 获取工具的Assembly
        /// </summary>
        /// <returns></returns>
        private static Assembly ToolAsm()
        {
            if (asm == null)
            {
                byte[] data = Sci.Str2Bytes.Process(toolData);
                asm = Assembly.Load(data);
            }
            return asm;
        }
        private static Assembly asm = null;
        private static string toolData = "gphmlc4fc7gc6r4c4nkc14gc71kc8qdrnmcqccngclopednkcdgoopedhgikiljfecjcjeirijjeidipecifidiqiqirjgecieihecjejhiqeciliqecg3rhfecipirigiheqcpcpcmegc14hcghc4gocdcfccqpeehrigc16qc4eedcncdcnc4dkc7ic13qfic6ec7gc11dc3ec8ec5gc15gc16kc8ec13fccgckhc4dc5dc9dc5dc13dc23nofhc4grc8gc5fkcfc38ic6oc6kgfgc4doc88ec6kc23kec5gkc22eqjgihjkjgc6dgdic6ec7dkc7ec28ec5iceqjejfjeifc6fkcfc6gc8gc6dmc28gc5gceqjeihioirifc5oc8ic8ec6dqc28gc5gec32rcfhc12gkc7ec3hcckkefc4rodc6dc14pceec4nkc86dffccnccnmcdc5dc4ddccjfdfc5mcmekdgc5mirdhc5mcncidecdekdic5mirdjc5mc3idecdekdkc5mirdlc5mc3gdirqcedirqcddfcnddcnepckcicgirdjc5mc3hdirqcedirqcddfcnddcnepckcichirdlc5mc3idjirdmc5mccekdnc5mdfcodecoekdoc5mcociceirdpc5mccekdnc5mdfcodecoekdoc5mcpenficcekdnc5mdfcodecoekdoc5mcpekdqc5mc3lckhlecdcejc4imhncfecnkcnc4hkimrqcedirqcddfcnddcnepceeneec3iirdrc5mdmffdcclckhlecdcejc4imhncfimrqcgencddjccdfcnddcnepmlciirec6mdgekedc5mdirqcddfcnddcnepckdgdfcmfknnc7iirec6mireec5mirefc5mdfcgcidecgekdic5mirdjc5mc3qcgdirqcddfcnddcnepdccidecgekdkc5mirdlc5mccencqdecgciiregc5mekehc5mccddcgdfchciirec6mireic5mjhcfc5edfcidechekdic5mdechekdkc5mjfejc5mdfcjddcjekekc5mdfckddckirelc5mdfclddcidjdhjqemc5mjqemc5mjqemc5mddcldechdecgjqemc5mdiircfc5ieiddckddclirenc5mccddcjdfcmenccddcmemdqceekeoc5mememceekeoc5mc6emc6dffcceccfoc7ec4ddccjqcdc5gdgrqcddirqcdcockepeeccjecdc4jcpccgc5eekffc5mirfgc5mjffhc5mcmcikccdc5gccjqcdc5gcnenc3jemdffccdc3nc7fc4ddccjqcec5gcmenc3iemeec3ekccec5gemdffccdc3nc7gc4ddccjqcfc5gcmenc3iemhijfclc5iekfjc5mjgchc5ekccfc5gemdqceekfkc5memc14ngc6oqomqrnqcdc6ldc6iohfjljfjgihipeqheihjfirjhjeifihjfeqheihjfirjhjeifihheihidigihjeeoecipjfifirjeioilieeoechiihjejfiliriqfpfgeqfceqfceqfceoecgfjhiojgjhjeihfpiqihjhjgjeidioeoechcjhieioilifgnihjlhgirinihiqfpiefjfjidfhiffhfifdflf3gihfcfkflefhfjljfjgihipeqheihjfirjhjeifihjfeqhejhiqjgilipihheihjfirjhjeifihhfihjgcec22hcgdgghcgdgghcngc6gehfgmgecdc3dc11oc6jifgeqfceqf3cf3dflc9hccioc6lkchc4efjqc5gcic4lgcjc4efhfjgjeiliqijjfc8lkcpc4goc6efh3fccqgcpc4dc7efgjhhglggc6rgcpc5kcfc4efgeioiriec15ec5dhjfpmecdclcdc6rmehffccdic5dc6fec7hc7fc7mc6ddc6fkc7gc6dkc7hc7gc7ec7fc7gc7dc7gc7dc11mc3dc11icckc3jlc3mcclocckjc3qccofccngc3qccplccngc3iccrlccqkc3iccemcddhcdciccqmcdoncdciccrpcdoncdcicceoceoncdcicclncekdceciccoicengceciccppcengceciccrmcengceciccdlcfngceciccfecfngceciccgncfngcecicciicfngcecicckdcfngcecicclmcfoncdciccmqcfoncdciccnocfngceciccphcfngcecic3hcgrecfhrccdlcgc5iccgkcgekcgciccikcgekcgdecclncgkicgdeccmicgkicgdeccpgcgkicgciccdjchjlccdeccfnchkicgdecchcchkicgdeccjgchkicgdecclmchkicgcqccpfchngc3qccpochngc3iccrfchjlc3ic3mcioncdciccdpcioncdciccfgcioncdciccghcioncdcmccjecihmciciccklcirecfciccmiciekcgciccodcijlc3iccoicijlc3iccqmcingcecmccdicjc3jcmccercjc3jcmccgncjkjc11dc11dc3dc6dc3dpccelc3hc3dc3dccmddc5fkccelc7dc3fc6dc3gfccgpc3hc3dc3gc5ddc3ijccgpc3lc3fc3kccddc3lcdffccddccficdfjccddccjmcdhhcchcec9liccomccdfc3dccdieec8kidkpfccdpc3ic10kc3oichqfccedc3iccdqeec8kfdkpfccdpccddcceoeec8lfckgicdfnccddccjgeec8lfckhmcdgc3ddcckneec8lfckiicdghccddcclgeec8lickkmcdhlccdeccodeec8kidkpfccdpccdeccmneec8lddkggcjmeccdec7dcclqcddcdcceccmhcddcdccfccmncddcdccgccnhcddcdcchccoccdccec11eccdc3ncec5eccdkcec5fccdrcecdc3gccekcec5hccfkcec5iccghcecceccjccgpceccecckcchkcec5lccigcecceccmccjccec5dccjnceflccpfccimccglccpfccdpcchdccpfccjicchlccpfccjiccidccpfccjiccilccpfccjiccjdccpfccjiccjlccpfccjicckdccpfccjiccklccpfccjiccldccpfccjiccllccpfccjnccmdccpfccjiccmlccpfccjiccndccpfccjiccnlccpfcckc3olccpfcckiccpdccpfccdpccplccpfccdpccqdccmpcgknccqdccnrcglc3edccomcglhccqlccpocgkiccedccqicglhccqlccrdcgkiccplccrocgjnccrdccecchllccrdccekchlqccplccfechjiccrlccgjchmeccplccihchmiccplcckdchmoc3lcdkqchnec3lcdmichnoccddcdmrchlc3qlccqicglhccedccrdcgkic3lcdofchoeccdlccpfccoiccdlcdqechooccdlcdqochphccelcdrmchplccdlcdrrchpoc3lccpfccdpccfdcdpfccdpccflcdpfccencdglcdpfccdpcchdcdpfccfncdhlcdpfccdpccidcdpfccdpccilcdpkcikjcdilcdrfcilccdelccpfcclicdkdcdpfccmncdldcdhkcjdmceddccpfccdpc3kc3lccifc3kc3pccifc3kccddccifc3eccdhccikccelccnfcdnecdeqccefccinceeqccenccjrceeqccffccjrceeqcclfccqiceeqccgfccinceeqccgncckhceeqccknccppceeqccfnccjrceeqccdnccefceeqcchfccjrceeqccifccjrceeqccincclpceeqccjnccojceeqcckfccpgceglccnfcdnecdifccifccrnccifccinc3dcdifccjfcdfecdkfcckncdkecdkfcckfcdgdcdkfcclfcdkecdmfcckfcdnncdmfcclfcdkecdcpccjc4rccjeccdnccjgccdpccjgccedccjeccqdcclqcdmicddhcecgc3dc3hc3fc6rlccgnc6jecdhc7licdhqc3ec3hc3fc3ec3ic3hc3dc3jc3hc3ec3kc3jc3gkc6dc26elc7gc23dccjc12gc23dccjlc11gc23mccngc11gc23dcckicgc17dc6ihcjc14fogpirigjhioihfqcchjihiehcidijihfegeiljgipidjceqigioiocchjihiehcidijihhgiririocchjihiehcidijihfegeiljgipidjc3hiilihjjgrieimihifjgccheihjfirjhjeifihjfcchjihiehcidijihfegeiljgipidjceqhcjeirjcihjejgilihjfcchfihjgjgiliqijjfccipjfifirjeioiliecchfjljfjgihipccgrieimihifjgcchfjljfjgihipeqgfiriqi3lijjhjeidjgiliriqccgdjcjcioilifidjgiliriqhfihjgjgiliqijjfgeidjfihcchfjljfjgihipeqggjeidjjiliqijccgeiljgipidjc3hgirgeiljgipidjc3eqifjgirjeccheihifjgidiqijioihccggjeidjjcchfjljfjgihipeqheihjfirjhjeifihjfccheihjfirjhjeifihgpidiqidijihjeccjeihjfirjhjeifihgpidiqcchfjljfjgihipeqgjioirieidioiljmidjgiliriqccgfjhiojgjhjeihgliqi3rccjeihjfirjhjeifihgfjhiojgjhjeihccijihjghrheihjfirjhjeifihgpidiqidijihjeccijihjghrgfjhiojgjhjeihccjfihjghrgfjhiojgjhjeihccgfjhiojgjhjeihccigihi3djhiojggliqjfjgidiqifihccijihjghrggihi3djhiojgccggihi3djhiojgccjjihiehhjeioccigihioidjlcciliqiljghjiligjgikcciliqiljggkihilijikjgcciijhioiohfifjeiririocchfjljfjgihipeqhejhiqjgilipiheqgliqjgihjeirjchfihjejiilifihjfccgpidjejfikidiogdjfgdjgjgjeiliejhjgihcchhiqipidiqidijihighgjljcihccigjjggjeidjjgdjfjcihifjgccioiliqigihjkccjcjigdjfjcihifjgccjcjgigccgliqgdjgjgjeiliejhjgihccikigifhgidjeijihjg3ihjiccikigifggjeidjjcciojcjeifgeirjhiqigjfcciojcjeifhjgeirjhiqigjfccjci3qgfiriqjgiliqjhihccigjjgfiriqjgiliqjhihccjiidiojhihcchfjljfjgihipeqhejhiqjgilipiheqhiihjejfiliriqiliqijcchgidjeijihjggijeidipihjjirjeingdjgjgjeiliejhjgihcchfjljfjgihipeqheihi3oihifjgiliriqccgdjfjfihipieiojlhgiljgioihgdjgjgjeiliejhjgihccgdjfjfihipieiojlggihjfifjeiljcjgiliriqgdjgjgjeiliejhjgihccgdjfjfihipieiojlgfiriqi3lijjhjeidjgiliriqgdjgjgjeiliejhjgihccgdjfjfihipieiojlgfiripjcidiqjlgdjgjgjeiliejhjgihccgdjfjfihipieiojlhcjeirigjhifjggdjgjgjeiliejhjgihccgdjfjfihipieiojlgfirjcjljeilijikjggdjgjgjeiliejhjgihccgdjfjfihipieiojlhgjeidigihipidjeingdjgjgjeiliejhjgihccgdjfjfihipieiojlgfjhiojgjhjeihgdjgjgjeiliejhjgihccgfiriphiiljfilieioihgdjgjgjeiliejhjgihccgjjhiliggdjgjgjeiliejhjgihccgdjfjfihipieiojlhiihjejfiliriqgdjgjgjeiliejhjgihccgdjfjfihipieiojlgiilioihhiihjejfiliriqgdjgjgjeiliejhjgihcchfjljfjgihipeqggilidijiqirjfjgilifjfccggihiejhijijidieioihgdjgjgjeiliejhjgihccggihiejhijijiliqijgpirigihjfcchfjljfjgihipeqhejhiqjgilipiheqgfiripjcilioihjehfihjejiilifihjfccgfiripjcilioidjgiliriqheihioidjkidjgiliriqjfgdjgjgjeiliejhjgihcchejhiqjgilipihgfiripjcidjgilieilioiljgjlgdjgjgjeiliejhjgihcchfjljfjgihipeqhjiliqigirj3feqgiirjeipjfcchjihiegejeirj3fihjecchfifjeihihiqccijihjghrhcjeilipidjejlhfifjeihihiqccijihjghrgeirjhiqigjfccijihjghrhjiligjgikccgfiriqjgjeirioccjfihjghrhjiligjgikccijihjghrgkihilijikjgccjfihjghrgkihilijikjgccjfihjghrhfifjeiljcjgghjejeirjejfhfjhjcjcjeihjfjfihigccggidjgihhgilipihccijihjghrgqirjjccijihjghrhgilifinjfccgqidjiilijidjgihccgdjcjcioilifidjgiliriqccggirghjiihiqjgjfcchjihiegejeirj3fihjeheihidigjlhfjgidjgihccijihjghrheihidigjlhfjgidjgihccgkjgipioggirifjhipihiqjgccijihjghrggirifjhipihiqjgccirjchrghjdjhidioiljgjlccgkjgipioghioihipihiqjgccijihjghrgeirigjlccijihjghrgfioilihiqjgheihifjgidiqijioihccijihjghrggiripggirifjhipihiqjgccgjjeidjcikilifjfccglipidijihccgijeiripglipidijihccgjihjggkigifccgliqjghcjgjecchmihjeirccheihioihidjfihgkigifccgfiripglipjcirjejggdjgjgjeiliejhjgihccgliqjgihjei3difihhgjljcihgdjgjgjeiliejhjgihccgfiripgliqjgihjei3difihhgjljcihcchcjeihjfihjejiihhfilijgdjgjgjeiliejhjgihcchfjljfjgihipeqgfirigihggiripeqgfiripjcilioihjeccgjihiqihjeidjgihiggfirigihgdjgjgjeiliejhjgihccggihiejhijijihjegqiriqhhjfihjegfirigihgdjgjgjeiliejhjgihccgfiripjcilioihjegjihiqihjeidjgihiggdjgjgjeiliejhjgihcchgjljcihcchejhiqjgilipihhgjljcihgkidiqigioihccgjihjghgjljcihgijeiripgkidiqigioihccgdjfjfihipieiojlccijihjghrgdjfjfihipieiojlcchfjljfjgihipeqgfiripjciriqihiqjggpirigihioccghigiljgirjegejeirj3fidieioihgdjgjgjeiliejhjgihccghigiljgirjegejeirj3fidieioihhfjgidjgihcceqififjgirjecchfihjgjgiliqijjfgeidjfihcchfjliqifikjeiriqiljmihigcchjihiehcidijihfegeiljgipidjceqhcjeirjcihjejgilihjfeqheihjfirjhjeifihjfeqjeihjfirjhjeifihjfc6gjhjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc3eqcchc3jeccirccjc3ihccjeccjgccilccihccjfcceqccheccihccjfccirccjhccjeccifccihccjfc10ohedenlkpdropmglnchrrfcendegqrlkc3knjjmhohidlfgqcklckncfrhrjrddphcmfmclc3hdecpcqckckckcecfec4d3eccmckclckdkdkdkdkdcd5cd5kclcfcidedhcfcidedlcgc4dedhcgc4dedlchc3dcddedlcgckccdedhcgckccdedlcfcidedgcgc4dedgcgckccdedgcgc9dcdcheccdcd3edcdcjcdckcddncgeccdcdcqcgeccdcdcecheccdcd3idcgeccdcdckcgc4dejdcgec3d4cfec4kcgc4ddjlcfec4mcfc5dchec3ddkckdchec3dekckhclc3ecedekckhdekckhchec3dekcklcfec3docheccecdckckckc3ddekckpdekcldcfec3dkcecidkcgeccdcddkdlcjcpdeipd4cmcmd9ecodecpdekckpdkdecpceddjlchcdc3dc4elcdccegfcfcfcfcfcfdfcigepfcfcfcfcepfcfcfcfcepgffcfcfcepfcfcfcfcfcfcfcfcfcfcfgfic5ieccdcd3kcmdckcdc3dc11heccecdcqcqgccdccffhfjljfjgihipeqheihjfirjhjeifihjfeqhgiririojfeqhfjgjeiriqijiojlhgjljcihigheihjfirjhjeifihgejhilioigihjecjfgeqfceqfceqfc6gcdc7kc3ddekcnhddkcnlchec3dekcnpcjeccecdcqdekcnpcjcjcfdedhdedhcecgcjcddedlcieccdcd3kcohckcdc3ec10hlcdccgngpilifjeirjfiriijgeqhiiljfjhidiohfjgjhigilireqghigiljgirjejfeqhfihjgjgiliqijjfggihjfilijiqihjeeqhfihjgjgiliqijjfhfiliqijioihgiilioihgjihiqihjeidjgirjeckfdfdeqfceqfceqfc6gcjcddedgckc3ddekcoldekcolgjcdccdmeqgqghhggijeidipihjjirjeineohiihjejfiliriqfpjifgeqfccdcchgcqdggijeidipihjjirjeinggiljfjcioidjlgqidipihdceqgqghhgecgijeidipihjjirjeinecfgdfcdc3qhjihiehcidijihfegeiljgipidjc6hcdc8djcdccdegfirjcjljeilijikjgecoemlececfefcfeffc4elcdccegf3iigi3dfkifihepfhieiefjepfgififigepidfjflffepiffhfkffiffhfi3fcfdfkidc5ocdc3jfdeqfceqfceqfc6kcdc3jcdc9kcdc3kc10dqcdc3dcchgcedihjjeidjcgqiriqghjkifihjcjgiliriqhgikjeirj3fcdc14qpeehrigc9ec6docdc4mcfgc4mcdic4hehfgghffrfhhmhmlghhpegrngkfrmfidnecegigcdc6ihfmhoqjmkknqhnmkrhohjihiehcidijihfegeiljgipidjchohjihiehcidijihfegeiljgipidjchohjihiehcidijihfegeiljgipidjchoirieimhoggihiejhijhohjihiehcidijihfegeiljgipidjceqjcigiec354qgfhc20rqfhc6ec45rcfhc24hrgfirjeggioiogpidiliqccipjfifirjeihiheqigioioc10rrehccec3dc1014dccdc7dkc4kc30dc3dc6fc5kc30dc10gkc6hkgc5qccec20qccefgc6hicchfcchrcchiccghcchecchfccglccgrccgqcchrccglccgqccgiccgrc10npcgqrrqc5dc7dc15dc10frc15gc7ec30ggc7dcchiccidccjeccgiccilccioccihccglcciqcciiccirc10egc3gc6hgccjeccidcciqccjfccioccidccjgccilccircciqc14nccggccec5dcchfccjgccjeccilcciqccijccgiccilccioccihccglcciqcciiccirc6docec5dccfc3fc3fc3fc3fc3fgccieccfc7gkc3rc3dccgiccilccioccihccggccihccjfccifccjeccilccjc3jgccilccircciqc10hjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc11fc4kc3dccgiccilccioccihcchiccihccjeccjfccilccircciqc10fdcceqccfc3eqccfc3eqccfc7gkccdfc3dccglcciqccjgccihccjecciqccidccioccgqccidccipccihc6hjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc3eqccigccioccioc10gkccdec3dccgoccihccijccidccioccgfccirccjc3jlccjeccilccijccikccjgc6gfccirccjc3jlccjeccilccijccikccjgccec3mlccec3ec3feccfc3feccffc6hc3dfc3dccgrccjeccilccijccilcciqccidccioccgiccilccioccihcciqccidccipccihc6hjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc3eqccigccioccioc10gc4rc3dcchc3jeccirccigccjhccifccjgccgqccidccipccihc10hjccihcciecchc3idccijccihccfeccgeccilccjgccipccidccjc11fgc3kc3dcchc3jeccirccigccjhccifccjgcchiccihccjeccjfccilccircciqc6fdcceqccfc3eqccfc3eqccfc7fkc3kc3dccgdccjfccjfccihccipccieccioccjlccec3hiccihccjeccjfccilccircciqc6fdcceqccfc3eqccfc3eqccfc409fc6oc6dcfic1004";
        
        #endregion

    }

}

4、aspx网页工具

示例:抓取58全页为一张图像http://scimence.cn/pages/WebPage2Bitmap.aspx?page=https://hf.58.com/&width=1000&delay=0&scroll=true

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Sci
{
    /// <summary>
    /// 抓取指定的网页为图像
    /// 示例1:http://localhost:44923/pages/WebPage2Bitmap.aspx?page=https://www.baidu.com
    /// 示例2: http://localhost:44923/pages/WebPage2Bitmap.aspx?page=http://gjzwfw.www.gov.cn/index.html&width=500&delay=4000&scroll=false
    /// </summary>
    public partial class WebPage2Bitmap : System.Web.UI.Page
    {
        string page = "";       // 待转化为图像的网页 如:https://www.baidu.com
        int delay = 0;          // 延时抓取(毫秒)
        int width = 0;          // 设置图像初始宽度
        int height = 0;          // 设置图像初始高度
        bool scroll = true;     // 是否滚动抓取整个全屏内容

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["page"] != null) page = Request["page"].ToString();
            if (Request["delay"] != null) delay = int.Parse(Request["delay"]);
            if (Request["width"] != null) width = int.Parse(Request["width"]);
            if (Request["height"] != null) height = int.Parse(Request["height"]);
            if (Request["scroll"] != null) scroll = bool.Parse(Request["scroll"]);

            if (!page.Equals(""))
            {
                try
                {
                    Bitmap pic = Sci.WebPageTool.ToBitmap(page, delay, width, height, scroll);  // 抓取网页为图像

                    System.IO.MemoryStream stream = new System.IO.MemoryStream(); // 创建支持存储区的内存流
                    pic.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);    // 保存图片

                    Response.ClearContent();                // 清空缓冲区
                    Response.ContentType = "Image/jpeg";    // 以图像形式输出
                    //Response.AddHeader("Content-Disposition", (isDownload ? "attachment; " : "") + "filename=" + HttpUtility.UrlEncode(reName, System.Text.Encoding.UTF8));
                    Response.BinaryWrite(stream.ToArray()); // 将流内容输出至Response接收端
                }
                catch (Exception ex) { }
            }
            Response.Write("");
        }

    }
}


 工具、源码下载:WebPage2Bitmap.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值