网页快照

C#生成网站网页快照,Html转成图片
2012-04-09 22:29

HtmlToImg.cs

 

using System;

using System.Drawing;

using System.Threading;

using System.Windows.Forms;

/// <summary>

/// 生成网页快照

/// </summary>

publicclassHtmlToImg

{

    Bitmap m_Bitmap;

    string m_Url;

    int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;

    public HtmlToImg(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)

    {

        m_Url = Url;

        m_BrowserHeight = BrowserHeight;

        m_BrowserWidth = BrowserWidth;

        m_ThumbnailWidth = ThumbnailWidth;

        m_ThumbnailHeight = ThumbnailHeight;

    }

    publicstaticBitmap GetHtmlToImg(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)

    {

        HtmlToImg thumbnailGenerator = newHtmlToImg(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);

        return thumbnailGenerator.GenerateHtmlToImgImage();

    }

    publicBitmap GenerateHtmlToImgImage()

    {

        Thread m_thread = newThread(newThreadStart(_GenerateHtmlToImgImage));

        m_thread.SetApartmentState(ApartmentState.STA);

        m_thread.Start();

        m_thread.Join();

        return m_Bitmap;

    }

    privatevoid _GenerateHtmlToImgImage()

    {

        WebBrowser m_WebBrowser = newWebBrowser();

        m_WebBrowser.ScrollBarsEnabled = false;

        m_WebBrowser.Navigate(m_Url);

        m_WebBrowser.DocumentCompleted += newWebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);

        while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)

            Application.DoEvents();

搜企业(www.soqiye.cn)

        m_WebBrowser.Dispose();

    }

    privatevoid WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

    {

        WebBrowser m_WebBrowser = (WebBrowser)sender;

        m_WebBrowser.ClientSize = newSize(this.m_BrowserWidth, this.m_BrowserHeight);

        m_WebBrowser.ScrollBarsEnabled = false;

        m_Bitmap = newBitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);

        m_WebBrowser.BringToFront();

        m_WebBrowser.DrawToBitmap(m_Bitmap, m_WebBrowser.Bounds);

        m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(m_ThumbnailWidth, m_ThumbnailHeight, null, IntPtr.Zero);

    }

}

 

 

 

调用方法:

         Bitmap bmp = HtmlToImg.GetHtmlToImg("http://www.baidu.com/", 800, 600, 800, 600);

        MemoryStream stream = newMemoryStream();

        bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);

        byte[] buff = stream.ToArray();

 

        //直接显示图片

        //Response.ContentType = "image/Jpeg";

        //Response.BinaryWrite(buff);

        //Response.End();

 

        //保存图片

        FileStream fs = newFileStream(Server.MapPath(DateTime.Now.Date.ToShortDateString() + ".jpg"), FileMode.Create);

        stream.WriteTo(fs);

        stream.Close();

        fs.Close();

转载于:https://www.cnblogs.com/songtzu/archive/2012/04/26/2471871.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php获取网页输出,PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)_PHP教程

看点&#xff1a;1、file_get_contents超时控制。2、页面编码判断。3、键盘Enter键捕捉响应。4、键盘event兼容处理。//event event || window.event;5、XMLHttpRequest 和 jQuery 两种实现方案。6、页面及源码同时展示。XMLHttpRequest版本 get_web.php复制代码 代码如下:hea…

HDU 3306 Another kind of Fibonacci

题意&#xff1a;A(0) 1 , A(1) 1 , A(N) X * A(N - 1) Y * A(N - 2) (N > 2)&#xff1b;给定三个值N&#xff0c;X&#xff0c;Y求S(N):S(N) A(0)2 A(1)2……A(n)2。 思路&#xff1a;原来我们讲的斐波那契数列是&#xff1a; F(0) 1, F(1) 1, F(N) F(N - 1) F(N…

php中拼接html代码,如何利用ajax给html动态拼接代码

function get_all_category_with_id() {$.ajax( {type: "get", url: "../../../appUpload/getAllCategoryByid", async : false, dataType: "text", success: function (data) {var obj JSON.parse(data);var str "";//先将元素对应清…

Arm Linux交叉编译和连接过程分析(1)

一、配置内核&#xff08;Kconfig&#xff09; 我们配置内核是实质是根据众多目录下面的Kconfig文件中组合成我们需要的一个最佳选择&#xff0c;即最终在根目录下面生成的.config文件&#xff0c;而这个文件会在根目录Makefile下调用的。这一部分我们主要讨论整个SEP4020体系…

struts2标签_select获取action传过来的值

<s:select list"#session.userlist" //从Action传过来的键(属性)的名称headerKey"请选择" //默认选中项的值headerValue"请选择" //默认选中项显示的信息listKey"project_id" …

3500 yuan to php,350 CNY to PHP Currency Converter - 人民币 菲律宾比索 汇率兑换

Exchange350 CNY2612.29 PHPExchange 350 人民币2612.29 菲律宾比索Exchange1750 CNY13061.46 PHPExchange 1750 人民币13061.46 菲律宾比索Exchange3500 CNY26122.92 PHPExchange 3500 人民币26122.92 菲律宾比索Exchange17500 CNY130614.62 PHPExchange 17500 人民币130614.6…

Arm Linux交叉编译和连接过程分析(2)

二、编译内核镜像过程 1、编译过程中涉及到到文件&#xff1a; /Makefile 编译产生顶层vmlinux镜像文件/scripts/Kbuild.include make过程中到一些基本定义 /scripts/Makefile.lib 编译内核时用到到函数库文件 /scripts/Makefile.build 内核编译到相关命令文件…

sipxecs简介

SipX和SipExchange的代码于2007年合并成SipXecs&#xff0c;北电和NTT等大公司参与构建SipXecs架构。SipXecs是电信级的&#xff0c;针对统一通信UC和呼叫中心Call Center应用&#xff0c;另外&#xff0c;支持设备批量升级&#xff0c;批量配置管理等应用&#xff0c;网管支持…

ASP.NET数据格式的Format-- DataFormatString

我们在呈现数据的时候&#xff0c;不要将未经修饰过的数据呈现给使用者。例如金额一万元&#xff0c;如果我们直接显示「10000」&#xff0c;可能会导致使用者看成一千或十万&#xff0c;造成使用者阅读数据上的困扰。若我们将一万元润饰后输出为「NT$10,000」&#xff0c;不但…

fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量

我将Fortran 77中的书面代码转换为Matlab代码。该函数使用QL算法计算矩阵的特征值和特征向量。由于某些原因&#xff0c;我不能在matlab中使用eig函数的结果。这种方法得到的特征值与eig函数得到的特征值不一样&#xff0c;有些相同但有些不同。我不知道问题在哪里。感谢您的任…

linux内核中分配4M以上大内存的方法

在内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER-1)次方个page(参见alloc_pages函数, "if (unlikely(order > MAX_ORDER)) return NULL;"), page的大小一般是4K bytes,MAX_ORDER缺省定义为11, 所以如果不修改内核, kmalloc能够分配的最大连续…

sql server 2008学习3 表组织和索引组织

表组织 表包含在一个或多个分区中&#xff0c;每个分区在一个堆或一个聚集索引结构包含数据行。堆页或聚集索引页在一个或多个分配单元中进行管理&#xff0c;具体的分配单元数取决于数据行中的列类型。 聚集表、堆和索引 SQL Server 表使用下列两种方法之一来组织其分区中的数…

BootLoader与Linux内核的参数传递

在嵌入式系统中&#xff0c;BootLoader 是用来初始化硬件&#xff0c;加载内核&#xff0c;传递参数。因为嵌入式系统的硬件环境各不相同&#xff0c;所以嵌入式系统的BootLoader 也各不相同&#xff0c;其中比较通用的是U-Boot&#xff0c;它支持不同的体系结构&#xff0c;如…

怎么跟踪php代码,第九节 PHP 跟踪调试代码 XDebug

>[success] # PHP 跟踪调试代码 XDebug- [下载XDebug扩展](https://xdebug.org/download.php)- 下载对应PHP版本的Xdebug![](https://box.kancloud.cn/c17f1f1e965522c2fe1411e1759e4447_870x524.png)- 线程安全(TS)和非线程安全(NTS)![](https://box.kancloud.cn/24efc18d4…

oracle经纬度换算成xy坐标,经纬度换算成xy坐标(经纬度转换xy坐标算法)

经纬度怎么转换成平面xy坐标&#xff1f;这里面的经纬度转换成xy坐标是多少&#xff1f;求解你把角度的单位设成度分秒制输入不久可以了。具体输入units命令&#xff0c;对话框中会有一个角度的单位制选择&#xff0c;包括度分秒制。例如绘制一条与当前点距离为100&#xff0c;…

Linux内核参数传递Tag

在2.4&#xff08;具体哪个版本记不清了&#xff09;以后的Linux内核中引入了一种新的向内核传递参数的方法tag标记。内核参数通过一个静态的tag链表在启动的时候传递到内核。每个tag的结构为 ----------- tag_header ----------- tag_xxx ----------- 其中tag_header为tag头&a…

ns学习资料

&#xff08;一&#xff09;. NS常用基本网站   1. Maillist个人觉得是寻求问题答案最好的地方。   http://mailman.isi.edu/pipermail/ns-users/   2. 柯老师的网站&#xff0c;包含很多非常实用资源&#xff1a;安装&#xff0c;trace文件分析&#xff0c;源代码分析&a…

Oracle备份standby,Oracle 11g 利用泠备份恢复standby库

Oracle 11g 利用泠备份恢复standby库1 开始在备库上进行泠备份先查好控制文件、redo、undo文件、数据文件的路径1.1 先关闭主库的归档日志传输SQL> ALTER system SETlog_archive_dest_state_2 DEFER;System altered.SQL>1.2 先关闭standby库SQL> shutdown immediate;D…

Linux内核参数的介绍

sysctl -a 可以列出当前所有的Linux内核参数。 /proc/sys/目录下的东西&#xff0c;对应着sysctl -a列出来的。 man 5 proc syscall 在 /arch/i386/kernel/entry.S里面列出来&#xff0c;这个看起来可能更方便

matlab单位阶跃响应与单位脉冲响应,python 已知响应函数求单位阶跃响应或脉冲响应...

最近学习自动控制原理&#xff0c;关于控制系统的一些&#xff0c;老师用布置了一些作业说要用matlab画&#xff0c;我试试python首先介绍一下所使用的库&#xff1a;control matplotlib sympy1.control库&#xff1a;用来计算脉冲响应与阶跃响应Paste_Image.png2.sympy&#x…