当前位置:  编程技术>.net/c#/asp.net

c# 网页截图的实现方法

    来源: 互联网  发布时间:2014-08-30

    本文导语:  c#实现网页截图的方法,有需要的朋友可以参考下。 主要实现以下功能: 对指定的页面获取,按指定的大小生成缩略图,也可以1:1的产生图。 值得一提的是,页面上的javascript 运行对截图貌似没任何影响。 首先,添加系统...

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;
}
}
}
}

调用示例:
 

代码示例:

string UrlPath;
bool CaptureState = false;
Guid guid;
protected bool SaveOriginalPageToImage(Guid myGuid)
{
//使用guid 来命名
guid = myGuid;
if (this.CurrentPageAct == PageAct.Edit)
{
string PagePath = Request.Url.LocalPath;
PagePath = PagePath.Replace("Operation", "Capture");

UrlPath = PagePath + "?act=view&ProjectNo=" + _projectNo;

Thread NewTh = new Thread(CaptureImage);
NewTh.SetApartmentState(ApartmentState.STA);
NewTh.Start();
while (NewTh.ThreadState == ThreadState.Running)
{
}
//返回截取状态
return CaptureState;
}
return false;
}

/**////
/// 捕获屏幕
///
///
///
public void CaptureImage()
{
try
{
string url = "http://" + Request.Url.Host + ":" + Request.Url.Port.ToString();
url = url + UrlPath;

GetImage thumb = new GetImage(url, 1024, 1200, 1024, 1200);
System.Drawing.Bitmap x = thumb.GetBitmap();
string FileName = DateTime.Now.ToString("yyyyMMddhhmmss");

x.Save(Server.MapPath("~/Capture/SavePage") + "\" + guid + ".jpg");
CaptureState = true;
}
catch (Exception ex)
{
CaptureState = false;
}
}

整个实现过程就是这样了,用c#轻松实现网页截图。
脚本学堂,祝大家学习愉快。


    
 
 

您可能感兴趣的文章:

  • C#实现将网页保存成图片的网页拍照功能
  • 使用C# Winform应用程序获取网页源文件的解决方法
  • C#获取网页源码的简单示例
  • C#实现下载网页HTML源码的方法
  • C#实现下载网页源码及获取http状态码的代码
  • c# 获取网页中指定字符串的代码一例
  • c# 获取网页中指定的字符串信息的实例代码
  • C#实现网页截图功能
  • 使用C#获取网页HTML源码的例子
  • C# Winform获取网页源文件的实现方法
  • c# 抓取Web网页数据分析
  • c# HttpWebRequest通过代理服务器抓取网页内容应用介绍
  • C#实现通过程序自动抓取远程Web网页信息的代码
  • c# 正则表达式对网页进行有效内容抽取
  • C# 抓取网页内容的方法详解
  • c#根据网址抓取网页截屏生成图片的示例
  • c#实现网页图片提取工具代码分享
  • C#使用Socket获取网页源代码的实例代码
  • 对指定的网页进行截图的效果 C#版
  • C#中使用Socket获取网页源代码的代码
  • 命令行网页截图程序 khtml2png
  • 在线网页截图工具 IECapt
  • 跨平台网页截图工具 CutyCapt
  • 批量下载网页图片,网页截图 Chrome 插件 挖一下
  • Python中使用 Selenium 实现网页截图实例
  • jcrop 网页截图工具(插件)开发
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • 在网页中能否用applet实现两个客户端的直接通信?急!!!
  • Python3通过request.urlopen实现Web网页图片下载
  • 怎么实现与远程的网页同步!
  • 不用定时刷新的方法,如何强行刷新网页?用命令实现。
  • 网页中怎么实现在edit内按enter键变成是tab的结果
  • 请教:在JavaScript中怎样实现网页的《后退》功能?
  • 开发板运行交互式网页,控件包含linux命令,用什么方法实现?
  • 怎么实现网页过期?
  • 网页上的饼壮图和柱状图是怎么实现的?请大虾帮忙!
  • 请问VC生成的控件怎么在JAVA里面调用,就是显示在网页上,里面的方法可以实现?
  • jsp include引用非本级目录网页实现代码
  • 基本问题:jsp开发的网页能否实现用户控制启动服务器中某应用程序的功能?
  • 怎样实现对一个网页当前有多少人在线进行统计?
  • JSP网页向SQLSERVER同时提交7万多字,怎么实现!
  • 如何实现网页的自动刷新!
  • 哪位仁兄给个简单的用JAAS实现的网页用户名、口令认证的例子...
  • 个人网页,如何实现将留言直接发到某个信箱的功能
  • java实现网页解析示例
  • WebDriver实现自动化打开IE中的google网页并实现搜索
  • 有没有谁实现了向IE浏览器那种“发送网页(P)”,把完整html格式发送给相应email?
  • web网页自动跳转方法:Html body onload自动跳转举例
  • linux浏览网页时怎样显示网页中的flash动画?
  • Python获取网页编码的方法及示例代码
  • 怎样把整张网页内容当作一副图形(只能作为图像,因为可能网页中有图)传给控制打印的Java程序?
  • HTML网页中的html body onload自动跳转方法介绍及自动跳转代码示例
  • 为什么我用netscape浏览时,网页不正常(主要是动态网页)碰到分类排序的就显示不了了
  • HTML网页的Meta Refresh自动跳转方法介绍及Meta Refresh自动跳转代码示例
  • [求助][排错]一段利用socket连接网页,并将网页内容拷贝下来的程序。。。[有一点问题]
  • 中文网页快速去重算法研究
  • 关于session(我停了一会儿没动网页,再在点击网页链接时,session丢失,然后点击IE的刷新,session又有了)这是怎么回事。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3