| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖
标题:网上看到的一段代码,不知道怎么放到文件里
只看楼主 加入收藏
qq1196
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-3-26
收藏
 问题点数:0 回复次数:4 
网上看到的一段代码,不知道怎么放到文件里
以下是网上看到的一份代码,不知道怎么放到文件里,应该怎么放,
我是一个NET菜鸟,请路过的兄弟帮帮我,谢谢,
哪段代码放到index.aspx  哪段代码放到img.aspx  应该建立几个文件,这些代码分别怎么放?

 碰到一个项目,需要对指定的网页进行截图保存,晕死!
   
  需求永远都是怪异的.....
  解决是关键~
   
  遂写了以下代码,快准狠!(因为赶时间!)
  可以实现对指定的页面获取,按指定的大小生成缩略图,当然也可以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 != )
   {
   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);
    = 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;
   }
   }
搜索更多相关主题的帖子: 文件 代码 
2008-03-26 16:07
qq1196
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-3-26
收藏
得分:0 
这里是原文件,
http://blog.

http://www.
2008-03-26 16:09
qq1196
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-3-26
收藏
得分:0 
哪位兄弟可以帮我一下呀,谢谢了,
2008-03-26 16:18
qq1196
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-3-26
收藏
得分:0 
哪位兄弟可以帮我一下呀,谢谢了,
2008-03-26 17:51
hebingbing
Rank: 6Rank: 6
来 自:黄土高坡
等 级:贵宾
威 望:27
帖 子:3417
专家分:371
注 册:2007-10-22
收藏
得分:0 
那不是人家写的很清楚吗?
“ 以下是调用方法,懒省事的方法,嘿嘿,赶时间就不说什么了,反正上面的抓取转换类已经写出来了,大家尽情的用异步,线程等方法自己玩吧!~

上面的放到image.aspx中,后面的放到index.aspx中。
2008-03-26 19:50
快速回复:网上看到的一段代码,不知道怎么放到文件里
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019173 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved