C#对指定的网页进行截图

碰到一个项目,需要对指定的网页进行截图保存,晕死!

需求永远都是怪异的.....

解决是关键~

遂写了以下代码,快准狠!(因为赶时间!)

可以实现对指定的页面获取,按指定的大小生成缩略图,当然也可以1:1的产生图,页面上的javascript 运行对截图貌似没任何影响,相当的正常,我个人都觉得很神奇。

首先对项目添加系统引用

System.Drawing;
System.Drawing.Design;
System.Windows.Forms;

获取指定网页并转换成图片的类:

using System;using System.Collections.Generic;using System.Text;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.Windows.Forms;using System.Diagnostics;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;            }        }    }}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, return
, this
, using
, system
public
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-10-31 01:57:27

C#对指定的网页进行截图的相关文章

对指定的网页进行截图的效果 C#版_C#教程

碰到一个项目,需要对指定的网页进行截图保存,晕死! 需求永远都是怪异的..... 解决是关键- 遂写了以下代码,快准狠!(因为赶时间!) 可以实现对指定的页面获取,按指定的大小生成缩略图,当然也可以1:1的产生图, 页面上的javascript 运行对截图貌似没任何影响,相当的正常,我个人都觉得很神奇.  首先对项目添加系统引用 System.Drawing; System.Drawing.Design; System.Windows.Forms; 获取指定网页并转换成图片的类: using S

日本首相官邸网站汉语网页的截图

这是2月29开设的http://www.aliyun.com/zixun/aggregation/1022.html">日本首相官邸网站汉语网页的截图.日本内阁官房长官藤村修29日宣布,日本首相官邸网站已经开设汉语网页,直接用汉语发布日本政府的相关信息.藤村修表示,今年正值日中邦交正常化40周年,基于增进两国人民相互理解的观点,用汉语发布信息适合时宜. 新华社发

利用WebBrowser类实现超长网页的截图

在实际的工作中,有时我们需要对一些网页进行截图,一般的网页截图的代码如下(VB2010)     这段代码用到了辅助类clsCaptureSettings.这个类有3个字段:Url:要访问的网页的地址:Width:要截图的宽度,默认是1024:TimeOut:超时设置,默认是180秒: 以上代码实现截图的关键就是两句话 _Web.Height = _Web.Document.Body.ScrollRectangle.Height 把WebBrowser的高度设置和网页高度一致 _Web.Draw

网页全截图实现

前言 PhantomJS简介 环境搭建 下载解析器phantomjs 然后是selenium 基本语法 helloworld 截图 使用命令行参数 结合Python 简易版 稍难一点点 题外话 总结 前言 使用Python的urllib以及urllib2只能获取到静态的网页,对于一整张网页进行截图就不是很容易了.今天凑巧看到了PhantomJS.于是对于整张网页进行截图保存再也不是一件困难的事情了. PhantomJS简介 PhantomJS is a headless WebKit scrip

如何让Windows7仅能访问指定的网页

  前段时间银行客户开了个体验区,是想让大家体验下他们的网银,但是发现很多用户却通过电脑上百度,上微博啥的,他们却只想让用户访问他们的网银系统. 办法1 修改Hosts文件 hosts文件位于 Windows/system32/drivers/etc/目录下,用于控制域名访问.我想到的办法修改hosts文件,让DNS域名解析这些网站都指向127.0.0.1,如下: 127.0.0.1 www.baidu.com 127.0.0.1 www.qq.com ...... 但是,不可能把所有的域名都写

您指定的网页无法访问! 错误类型:"连接失败"

最普通与简单的分析方法 出现网页无法访问原因有三个: 一.浏览器将这个网站设置为不信任,将其拦截了,将此网站加入到信任列表即可: 二.网络设置中DNS 有问题,没有办法解析这个网站的网址,设置为正确的DNS 服务器地址即可: 三.网络连接有问题,建议检查一下网络线路 病毒造成的,也可能是浏览器的原因造成网页有错误,还有可能就是自身网页的问题造成网页错误 解决办法 1.打开浏览器,点"工具"→"管理加载项"那里禁用所有可疑插件,或者你能准确知道没问题的保留.然后→工具

php正则匹配获取指定url网页页面超级链接地址

 在数据采集与页面分析中,常需要抓取给定url页面的内容,或者第二.第三层次深度页面内容. 这里是一个测试例子的实现,仅供参考. 代码如下: /* 匹配给定页面链接 return:array match[link,content,all] */ function match_links($host, $document) {  $pattern = '/<a(.*?)href="(.*?)"(.*?)>(.*?)</a>/i';   preg_match_all

您指定的网页无法访问,错误类型:403 Forbidden

iis设置方法 1.打开"Internet信息服务"窗口,展开"用户名""网站"选项,在其上单击鼠标右键,在弹出的快捷菜单中选择"属性"菜单命令,打开"网站 属性"对话框,单击"文档"选项卡,在"启用默认文档"选项下单击"添加"按钮,在打开的对话框中输入新的文档名,再单击"确定"按钮即可. apache设置首页 设置默认页面 方

网页截图工具php+IECapt简介

IECapt可以将捕获网页,生成BMP.JPEG 或 PNG格式的图片,包含C++和C#两种版本,不足是依赖于Internet Explorer,这就决定了它只能在Windows下使用.IECapt是一个命令行工具,通过指定的url,利用ie内核,即可将其图片截取下来. 操作: 第一步: 下载地址IECapt :http://download.csdn.net/detail/u011986449/6877893 第二步: 如下代码: <?php header('Content-type:text