300份,寻求生成网页缩略图代码
自己手里有一个,不太稳定。
[解决办法]
http://download.csdn.net/down/682252/yulinghua
这个呢
[解决办法]
来接分。
[解决办法]
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
[解决办法]
顶!
[解决办法]
帮顶
[解决办法]
自己修改修改啊。修改 好别忘了开源
[解决办法]
生成高质量缩略图通用函数
/// <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%可用
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啊,你说你手头有一份不好用的,我看中了,可否发布了共享一下,嘿嘿。我也还没试过网页快照
[解决办法]
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)); } } } } } }}
[解决办法]
我只想说:顶了
[解决办法]
刚学会提取网站页面数据能做出来?能:不能?
[解决办法]
楼上有80%的代码都是不看题就贴的。
还有人告诉小灰怎么控制缩略图大小的思路
甚至还有人教小灰怎么用Google来搜索fileUpload
问一句,小灰,你吐血了没?
[解决办法]
网页 快照 还没弄过
关注
up
[解决办法]
<%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
[解决办法]
好东西 学习了!
[解决办法]
[解决办法]
楼主看过下面这个网址的那个代码么:
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下不看帖就回的人