读书人

300份谋求生成网页缩略图代码

发布时间: 2012-06-20 20:37:21 作者: rapoo

300份,寻求生成网页缩略图代码
自己手里有一个,不太稳定。

[解决办法]
http://download.csdn.net/down/682252/yulinghua
这个呢
[解决办法]
来接分。
[解决办法]

C# code
 private void CreateThumbnail(string sFileSrcPath, string sFileDstPath, int iSizeLimit)    {        if (File.Exists(sFileSrcPath))        {            System.Drawing.Image image = System.Drawing.Image.FromFile(sFileSrcPath) as System.Drawing.Bitmap;            System.Drawing.SizeF size = new System.Drawing.SizeF(image.Width, image.Height);            while (size.Width > iSizeLimit || size.Height > iSizeLimit)            {                size.Height /= 1.1F;                size.Width /= 1.1F;            }            System.Drawing.Image bitmap = new System.Drawing.Bitmap(Convert.ToInt16(size.Width), Convert.ToInt16(size.Height));            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;            g.Clear(Color.Transparent);            Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);            g.DrawImage(image, rect, new System.Drawing.Rectangle(0, 0, image.Width, image.Height), System.Drawing.GraphicsUnit.Pixel);            ImageCodecInfo myImageCodecInfo;            Encoder myEncoder;            EncoderParameter myEncoderParameter;            EncoderParameters myEncoderParameters;            myImageCodecInfo = ImageCodecInfo.GetImageEncoders()[0];            myEncoder = Encoder.Quality;            myEncoderParameters = new EncoderParameters(1);            myEncoderParameter = new EncoderParameter(myEncoder, 100L);             myEncoderParameters.Param[0] = myEncoderParameter;            bitmap.Save(sFileDstPath, myImageCodecInfo, myEncoderParameters);            myEncoderParameter.Dispose();            myEncoderParameters.Dispose();            image.Dispose();            bitmap.Dispose();            g.Dispose();        }    }
[解决办法]
mark
[解决办法]
mark
[解决办法]
顶!
[解决办法]
帮顶
[解决办法]
自己修改修改啊。修改 好别忘了开源
[解决办法]
生成高质量缩略图通用函数
C# code
/// <summary>        /// 生成缩略图        /// </summary>        /// <param name=""originalImagePath"">源图路径(物理路径)</param>        /// <param name=""thumbnailPath"">缩略图路径(物理路径)</param>        /// <param name=""width"">缩略图宽度</param>        /// <param name=""height"">缩略图高度</param>        /// <param name=""mode"">生成缩略图的方式</param>            public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)        {            Image originalImage = Image.FromFile(originalImagePath);                        int towidth = width;            int toheight = height;                    int x = 0;            int y = 0;            int ow = originalImage.Width;            int oh = originalImage.Height;                    switch (mode)            {                        case ""HW""://指定高宽缩放(可能变形)                                    break;                case ""W""://指定宽,高按比例                                        toheight = originalImage.Height * width/originalImage.Width;                    break;                case ""H""://指定高,宽按比例                    towidth = originalImage.Width * height/originalImage.Height;                                        break;                        case ""Cut""://指定高宽裁减(不变形)                                    if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)                    {                        oh = originalImage.Height;                        ow = originalImage.Height*towidth/toheight;                        y = 0;                        x = (originalImage.Width - ow)/2;                    }                    else                    {                        ow = originalImage.Width;                        oh = originalImage.Width*height/towidth;                        x = 0;                        y = (originalImage.Height - oh)/2;                    }                    break;                                    default :                    break;            }                            //新建一个bmp图片            Image bitmap = new System.Drawing.Bitmap(towidth,toheight);            //新建一个画板            Graphics g = System.Drawing.Graphics.FromImage(bitmap);            //设置高质量插值法            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;            //设置高质量,低速度呈现平滑程度            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;            //清空画布并以透明背景色填充            g.Clear(Color.Transparent);                    //在指定位置并且按指定大小绘制原图片的指定部分            g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),                new Rectangle(x, y, ow,oh),                GraphicsUnit.Pixel);            try            {                            //以jpg格式保存缩略图                bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);            }            catch(System.Exception e)            {                throw e;            }            finally            {                originalImage.Dispose();                bitmap.Dispose();                                        g.Dispose();            }        } 


[解决办法]
UP
[解决办法]
请楼主把你手里的代码给我一份.谢谢.
c.x.friday@163.com
给网页照相,这个我还没有用到过.
[解决办法]
楼主强
[解决办法]
晕,我想大部分人都看成了图片缩略图了。
[解决办法]
首先对项目添加系统引用

System.Drawing; 
System.Drawing.Design; 
System.Windows.Forms;

  获取指定网页并转换成图片的类:

usingSystem; 
usingSystem.Collections.Generic; 
usingSystem.Text; 
usingSystem.Drawing; 
usingSystem.Drawing.Drawing2D; 
usingSystem.Drawing.Imaging; 
usingSystem.Windows.Forms; 
usingSystem.Diagnostics; 
namespaceMyLib 
{ 
  publicclassGetImage 
  { 
    privateintS_Height; 
    privateintS_Width; 
    privateintF_Height; 
    privateintF_Width; 
    privatestringMyURL; 
    publicintScreenHeight 
    { 
      get{returnS_Height;} 
      set{S_Height=value;} 
    } 
    publicintScreenWidth 
    { 
      get{returnS_Width;} 
      set{S_Width=value;} 
    } 
    publicintImageHeight 
    { 
      get{returnF_Height;} 
      set{F_Height=value;} 
    } 
    publicintImageWidth 
    { 
      get{returnF_Width;} 
      set{F_Width=value;} 
    } 
    publicstringWebSite 
    { 
      get{returnMyURL;} 
      set{MyURL=value;} 
    } 
    publicGetImage(stringWebSite,intScreenWidth,intScreenHeight,intImageWidth,intImageHeight) 
    { 
      this.WebSite=WebSite; 
      this.ScreenWidth=ScreenWidth; 
      this.ScreenHeight=ScreenHeight; 
      this.ImageHeight=ImageHeight; 
      this.ImageWidth=ImageWidth; 
    } 
    publicBitmapGetBitmap() 
    { 
      WebPageBitmapShot=newWebPageBitmap(this.WebSite,this.ScreenWidth,this.ScreenHeight); 
      Shot.GetIt(); 
      BitmapPic=Shot.DrawBitmap(this.ImageHeight,this.ImageWidth); 
      returnPic; 
    } 
  } 
  classWebPageBitmap 
  { 
    WebBrowserMyBrowser; 
    stringURL; 
    intHeight; 
    intWidth; 
    publicWebPageBitmap(stringurl,intwidth,intheight) 
    { 
      this.Height=height; 
      this.Width=width; 
      this.URL=url; 
      MyBrowser=newWebBrowser(); 
      MyBrowser.ScrollBarsEnabled=false; 
      MyBrowser.Size=newSize(this.Width,this.Height); 
    } 
    publicvoidGetIt() 
    { 
      MyBrowser.Navigate(this.URL); 
      while(MyBrowser.ReadyState!=WebBrowserReadyState.Complete) 
      { 
        Application.DoEvents(); 
      } 
    } 
    publicBitmapDrawBitmap(inttheight,inttwidth) 
    { 
      BitmapmyBitmap=newBitmap(Width,Height); 
      RectangleDrawRect=newRectangle(0,0,Width,Height); 
      MyBrowser.DrawToBitmap(myBitmap,DrawRect); 
      System.Drawing.ImageimgOutput=myBitmap; 
      System.Drawing.ImageoThumbNail=newBitmap(twidth,theight,imgOutput.PixelFormat); 
      Graphicsg=Graphics.FromImage(oThumbNail); 
      g.CompositingQuality=CompositingQuality.HighSpeed; 
      g.SmoothingMode=SmoothingMode.HighSpeed; 
      g.InterpolationMode=InterpolationMode.HighQualityBilinear; 
      RectangleoRectangle=newRectangle(0,0,twidth,theight); 
      g.DrawImage(imgOutput,oRectangle); 
      try 
      { 
        return(Bitmap)oThumbNail; 
      } 
      catch(Exceptionex) 
      { 
        returnnull; 
      } 
      finally 
      { 
        imgOutput.Dispose(); 
        imgOutput=null; 
        MyBrowser.Dispose(); 


        MyBrowser=null; 
      } 
    } 
  } 
}


[解决办法]
用大的地方用大图,用小的地方用小图。。。。

开始的时候尺寸控制好就成了~
[解决办法]

100%可用

C# code
using System;using System.Collections;using System.Configuration;using System.Data;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Drawing;using System.IO;public partial class upload : System.Web.UI.Page{    public string EditName;    public string formName;    protected void Page_Load(object sender, EventArgs e)    {        EditName = Request.QueryString["EditName"].ToString();        formName = Request.QueryString["formName"].ToString();    }    protected void Button1_Click(object sender, EventArgs e)    {        //检查上传文件的格式是否有效         if (this.UploadFile.PostedFile.ContentType.ToLower().IndexOf("image") < 0)        {            msg.msgstr("你上传的格式不对");            return;        }        //生成原图         Byte[] oFileByte = new byte[this.UploadFile.PostedFile.ContentLength];        System.IO.Stream oStream = this.UploadFile.PostedFile.InputStream;        System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream);        int oWidth = oImage.Width; //原图宽度         int oHeight = oImage.Height; //原图高度         int tWidth = 100; //设置缩略图初始宽度         int tHeight = 100; //设置缩略图初始高度         //按比例计算出缩略图的宽度和高度         if (oWidth >= oHeight)        {            tHeight = (int)Math.Floor(Convert.ToDouble(oHeight) * (Convert.ToDouble(tWidth) / Convert.ToDouble(oWidth)));        }        else        {            tWidth = (int)Math.Floor(Convert.ToDouble(oWidth) * (Convert.ToDouble(tHeight) / Convert.ToDouble(oHeight)));        }        //生成缩略原图         Bitmap tImage = new Bitmap(tWidth, tHeight);       Graphics g = Graphics.FromImage(tImage);        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量插值法        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//设置高质量,低速度呈现平滑程度        g.Clear(Color.Transparent); //清空画布并以透明背景色填充         g.DrawImage(oImage, new Rectangle(0, 0, tWidth, tHeight), new Rectangle(0, 0, oWidth, oHeight), GraphicsUnit.Pixel);        string oFullName = Server.MapPath("../../") + "upload/bimages/" + "o" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; //保存原图的物理路径        string tFullName = Server.MapPath(".") + "/upload/simages/" + "t" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; //保存缩略图的物理路径         string goname = "/upload/bimages/" + "o" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; //保存原图的物理路径         try        {            //以JPG格式保存图片             oImage.Save(oFullName, System.Drawing.Imaging.ImageFormat.Jpeg);           tImage.Save(tFullName, System.Drawing.Imaging.ImageFormat.Jpeg);            Response.Write("<script language=javascript type=text/javascript>;window.opener.document." + formName + "." + EditName + ".value='" + goname + "'</script>");            Response.Write(" <script language=javascript>window.alert('文件上传成功!!');window.close();</script>");                }        catch (Exception ex)        {            Response.Write(oFullName);          throw ex;        }        finally        {            //释放资源                        oImage.Dispose();          g.Dispose();          tImage.Dispose();        }     }} 


[解决办法]
我只会生成图片缩略图。学习。
[解决办法]
你们这些人就是瞎回答。
[解决办法]
上google 搜下 fileUpload 上传生成缩略图
[解决办法]
学习下
[解决办法]
来学习了。。。
[解决办法]
楼主给我发一份好吗?
net_xiaojian@126.com

谢谢了。
[解决办法]
参考
http://www.cnblogs.com/zxjyuan/articles/1275988.html
http://www.cnblogs.com/kaima/archive/2006/12/25/603519.html】
http://www.cnblogs.com/zxjyuan/articles/1276284.html
[解决办法]
mark
[解决办法]
真受不了有些人,明明要的是生成网页的缩略图,却不断的发生成图片的...简直是为了抢分什么都做
LZ啊,你说你手头有一份不好用的,我看中了,可否发布了共享一下,嘿嘿。我也还没试过网页快照
[解决办法]

探讨
LZ啊,你说你手头有一份不好用的,我看中了,可否发布了共享一下,嘿嘿。我也还没试过网页快照

[解决办法]
lz的头像很可爱
[解决办法]
手里没有..帮顶.
[解决办法]
up~学习
[解决办法]
此贴收藏
[解决办法]
路过

[解决办法]
原理是通过IE在本地打开目标URL同时截图,
这种方法都有安全性的问题,如果你为恶意网页生成缩略图,可能就是一场灾难……

参考: C#根据URL在线生成网页缩略图

C# code
private void OnDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){        WebBrowser browser = (sender as WebBrowser);              if (browser != null)        {          mshtml.IHTMLDocument2 document = (browser.Document.DomDocument as mshtml.IHTMLDocument2);          if (document != null)          {            mshtml.IHTMLElement element = (document.body as mshtml.IHTMLElement);            if (element != null)            {              IHTMLElementRender render = (element as IHTMLElementRender);              if (render != null)              {                using (Graphics graphics = this.CreateGraphics())                {                  IntPtr hdcDestination = graphics.GetHdc();                  render.DrawToDC(hdcDestination);                  IntPtr hdcMemory = GDI32.CreateCompatibleDC(hdcDestination);                  IntPtr bitmap = GDI32.CreateCompatibleBitmap(                    hdcDestination,                    browser.ClientRectangle.Width,                    browser.ClientRectangle.Height                    );                                  if (bitmap != IntPtr.Zero)                  {                    IntPtr hOld = (IntPtr)GDI32.SelectObject(hdcMemory, bitmap);                    GDI32.BitBlt(                      hdcMemory,                      0, 0,                      browser.ClientRectangle.Width, browser.ClientRectangle.Height,                      hdcDestination,                      0, 0,                      TernaryRasterOperations.SRCCOPY                      );                    GDI32.SelectObject(hdcMemory, hOld);                    GDI32.DeleteDC(hdcMemory);                    graphics.ReleaseHdc(hdcDestination);                                      SaveThumbnail(Image.FromHbitmap(bitmap));                  }                }              }            }          }        }} 


[解决办法]
我只想说:顶了
[解决办法]

C# code
   刚学会提取网站页面数据能做出来?能:不能?
[解决办法]


楼上有80%的代码都是不看题就贴的。

还有人告诉小灰怎么控制缩略图大小的思路

甚至还有人教小灰怎么用Google来搜索fileUpload

问一句,小灰,你吐血了没?
[解决办法]
网页 快照 还没弄过
关注

up
[解决办法]
探讨


楼上有80%的代码都是不看题就贴的。

还有人告诉小灰怎么控制缩略图大小的思路

甚至还有人教小灰怎么用Google来搜索fileUpload

问一句,小灰,你吐血了没?

[解决办法]
不管楼主吐没吐血,我先吐了,得罪了.
[解决办法]
没有用过。

学习.....

帮顶一下!
[解决办法]
收藏 学习
[解决办法]
探讨
路过

[解决办法]
good
[解决办法]
小灰姐姐,了解monorail吗?

不要吐血

有空能不能提点一二....???
[解决办法]
一定要顶
[解决办法]
等LZ解决了发出来学习一下
[解决办法]
mark
[解决办法]
探讨
小灰姐姐,了解monorail吗?

不要吐血

有空能不能提点一二....???

[解决办法]
我有


[解决办法]

[解决办法]
asp 的
VBScript code
<%Dim snapshotSet snapshot = Server.CreateObject("TingoUti.HtmlDocSnapshot")snapshot.PageWidth = 1024snapshot.PageWidth = 1000snapshot.AutoPage = Truesnapshot.SavePath = Server.MapPath("/") & "\WebPageSnapshots\DailyNews\" & Date()snapshot.OverwriteAll = Truesnapshot.NamingType = 3 ' NT_USEFHTMLDOCNAMEsnapshot.MaxPageCount = 10 ' 0 - 9snapshot.HtmlDocURL = "/Activation/News/default.asp"snapshot.Save()%>
[解决办法]

[解决办法]
学习
[解决办法]
帮楼主顶一个,楼主实现了记得分享啊
[解决办法]
mark
[解决办法]
好东西 学习了!
[解决办法]
探讨
引用:
小灰姐姐,了解monorail吗?

不要吐血

有空能不能提点一二....???

你确定是姐姐吗?

[解决办法]
哈哈 小灰一定被郁闷了吧
我也很关注网页快照 帮顶下哈


[解决办法]
楼主看过下面这个网址的那个代码么:
http://www.codeproject.com/KB/IP/htmlimagecapture.aspx

下面这个是界面图:

这个是软件运行后在C盘生成的页面截图:


这个软件是C++代码的,不但可以生成缩略图 还可以保存成Jpg格式文件。 楼去去下载那个代码看看。
当然,如果跟你现在有的已经重复了就算了。
[解决办法]
关注,顶
[解决办法]
学习!!!
顶!
[解决办法]
不错,学习了!
[解决办法]
收藏,帮顶
[解决办法]
来学习
[解决办法]
mark
[解决办法]


顶 ~ 下边的兄弟 吧帖子都看完 在发帖 。。。
[解决办法]
严重关注中.
[解决办法]
关注 ...
[解决办法]
关注
[解决办法]
关注中...
[解决办法]
关注中...
[解决办法]

[解决办法]
mark下
[解决办法]
早上起来再帮顶下
[解决办法]
如何在asp.net中实现图片轮显?
[解决办法]
顶了

刚开了一新的c#群 63242231 希望有志同道合的 朋友加入 更期望高手的加入

有您的加入会更精彩。。。
[解决办法]
如果简单的用WebBrowser不稳定,很容易出现“白屏”,参考这个项目:http://iecapt.sourceforge.net/

使用IECapt#,用法类似与WebBrowser
[解决办法]
来吧, 我也帮顶,什么东西这么好, lz知道后发出来让大家学习学习!
[解决办法]
mark~
[解决办法]
上,灰头儿上上!
[解决办法]
如果是用c/s模式,打网页后截图,再缩图,完全应该是不难的,以前就写过

如果想看不见网页就想要图,这太NB,我也要份原代码

anncesky@163.com
[解决办法]
mark
[解决办法]
学习
[解决办法]
不错,以前看Opera浏览器有这个功能到网上搜过,但是后来不了了之,希望楼主解决了发出来共享下,Mark
[解决办法]

http://www.west263.com/info/html/wangluobiancheng/DotNetBianCheng/20080224/22330.html
http://www.west263.com/www/info/62049-1.htm
[解决办法]
帮顶,,很期待功能实现并开源....
[解决办法]
用b/s截图恐怕没有activex实现不了
[解决办法]
顶,学习了...
------解决方案--------------------


我也在遇到了这问题!!!
[解决办法]
http://icesun963.bokee.com/6206943.html

see see
[解决办法]
先做个记号
[解决办法]
解决了分享一下
[解决办法]
丿
[解决办法]
mark
[解决办法]
顶一下,我是后台写个程序处理截图实现的
[解决办法]
严重期待一下。
[解决办法]
没用过,先收藏下
[解决办法]
支持,实现了开源下,还有bs下不看帖就回的人

读书人网 >asp.net

热点推荐