




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对指定的网页进行截图 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; 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()trystring url = http:/ + Request.Url.Host + : + Request.Url.Port.ToString();url = url + UrlPath;GetImage thumb = new GetImage(url, 1024, 1200, 1024, 1200);System.Drawing
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 奶茶店公司经营管理制度
- 施工搬运现场管理制度
- 外协供应商品质管理制度
- 上海洗车店排水管理制度
- 施工现场油料管理制度
- 公司给客户样品管理制度
- 子公司信息披露管理制度
- 培训学校财务室管理制度
- 公司常用消耗品管理制度
- 幼儿园技防设备管理制度
- 电力监理档案管理课件
- 华南理工大学《论文写作与学术规范》2021-2022学年第一学期期末试卷
- 六年级20道说理题
- 两个女儿断绝关系协议书范文
- 2024-2025学年七年级语文上学期期中模拟卷(含答案)
- 备品备件保障方案
- 幼儿教师专业成长支持体系构建研究
- 举一反三系列高考高中数学同步及复习资料人教A版必修1专题5.15 三角函数的图象与性质的综合应用大题专项训练(30道)(含答案及解析)
- 广告设计师三级理论知识鉴定要素细目表
- 会诊制度培训课件
- CSTM-窗口晶体 紫外级氟化钙晶体编制说明
评论
0/150
提交评论