




免费预览已结束,剩余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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版文化旅游景区店面租赁及旅游服务合同
- 2025版生态木结构设计与施工一体化服务合同
- 二零二五年大型商场能耗监测与节能管理服务合同
- 二零二五年度黄牛养殖与屠宰行业购销市场拓展合同
- 二零二五年度广告公司兼职策划人员聘用合同模板
- 二零二五年产业并购股权融资协议
- 二零二五年北京二手房交易定金确认协议
- 二零二五年度餐饮业品牌授权与加盟管理服务合同
- 2025版跨境电商平台存货质押融资合作协议
- 2025版教育信息化技术服务合作协议
- 药品责任赔偿管理制度
- 中国2030年能源电力发展规划研究及2060年展望
- 外协供应商品质管理制度
- BIM技术在绿色建筑碳足迹计算与优化中的应用研究
- 易制毒考试试题及答案
- 2025至2030中国普惠金融行业产业运行态势及投资规划深度研究报告
- 中级经济师人力资源管理专业历年模拟真题及答案
- 压力管道定期安全自查记录表
- JG/T 197-2018预应力混凝土空心方桩
- 工贸企业安全隐患排查治理操作手册
- 2025届江西省九江市柴桑区三中学数学七下期末学业质量监测模拟试题含解析
评论
0/150
提交评论