代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
对指定的网页进行截图
作者:
Dezai.CN
/ 发布于
2011/9/28
/
615
<div> <div id="cnblogs_post_body">首先对项目添加系统引用 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; } /**//// <summary> /// 捕获屏幕 /// </summary> /// <param name="UrlPath"></param> /// <returns></returns> 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; } } <!--NEWSZW_HZH_END--></div> <script type="text/javascript"> if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = true; var cb_blogId = 31308; var cb_entryId = 1818659; var cb_blogApp = "love2wllw"; var cb_blogUserGuid = "50863d0b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2010/9/5 22:17:00'; </script> </div>
试试其它关键字
截图
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3