|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
竟发现没有太大的帮助。总觉得要用起来,感觉到不了位。因为公司机器的原因,一直没有安装vs.net(也从来没有用过)。以前做asp的时候一直用DW(感觉其代码联想功能不错),可现在到了asp.net却不习惯了。需求:电子商务中有大批的图片要丰前台显现,而这些图片年夜部分由客户本人上传,图片的规格也是多种多样(次要择时纵横比例)。如何让这些图片在前台划一且美妙的显现呢?
目标:划一:流动纵横比例;美妙:图片稳定型,也就是按比例缩放。
假定:假设我们要在前台的一个Div(别号:相框)中放一张图(别号:图A),相框的宽度为120px,高度为:90px。而图A的原始图片的宽度为为1414px,高度为:886px.
明显相框与图A的原始图片的比例纷歧致。为了划一且美妙,我们但愿将图A处置成56*96.然后把她居中的放在相框(120*90)中。
计划:我们接纳.net手艺,经由过程GDI操纵图片:
实行:不想多说(信任人人都应当看得懂)先贴出我的图象处置类(正文还算分明):
<br>usingSystem;
<br>usingSystem.Drawing;
<br>usingSystem.IO;
<br>
<br>namespaceAnts.Tools
<br>
<br>
<br>{
<br>publicclassImage
<br>
<br>
<br>{
属性#region属性
/**////<summary>
<br>///相框的宽度
<br>///</summary>
publicintWidth
<br>{get;set;}
/**////<summary>
<br>///相框的高度
<br>///</summary>
publicintHeight
<br>{get;set;}
/**////<summary>
<br>///待处置的图片的物理路径
<br>///</summary>
publicstringPath
<br>{get;set;}
<br>#endregion
<br>
<br>privateboolThumbnailCallBack()//GDI+托付
<br>{
<br>returnfalse;
<br>}
/**////<summary>
<br>///缩略图片的函数
<br>///</summary>
<br>///<paramname="OK">用来判别转换是不是乐成</param>
<br>///<returns>处置好的图片缩略图放进内存中</returns>
<br>publicMemoryStreamgetThumb(outboolOK)
<br>{
<br>OK=false;
<br>intX,Y;
<br>System.Drawing.ImagemyThumbnail=null;
<br>try
<br>{
<br>BitmapmyBitmap=newBitmap(Path);
<br>X=myBitmap.Width;
<br>Y=myBitmap.Height;
<br>decimala=(decimal)X/(decimal)Y;//原始图片片的比例
<br>decimalb=(decimal)Width/(decimal)Height;//相框的比例
<br>System.Drawing.Image.GetThumbnailImageAbortmyCallBack=newSystem.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallBack);
<br>
<br>intnewheight,newwidth;
<br>if(b>a)
<br>{
<br>newheight=Height;
<br>newwidth=(int)decimal.Round(newheight*a,0,MidpointRounding.AwayFromZero);
<br>}
<br>else
<br>{
<br>newwidth=Width;
<br>newheight=(int)decimal.Round(Width/a,0,MidpointRounding.AwayFromZero);
<br>
<br>}
<br>myThumbnail=myBitmap.GetThumbnailImage(newwidth,newheight,myCallBack,IntPtr.Zero);//天生缩略图
<br>OK=true;
<br>myBitmap.Dispose();
<br>}
<br>catch
<br>{
<br>OK=false;
<br>}
<br>System.IO.MemoryStreamms=newSystem.IO.MemoryStream();
<br>myThumbnail.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
<br>
<br>returnms;
<br>}
<br>}
<br>}
<br>
怎样使用此类呢?仍是贴代码:
1.新建一个aspx页面,放一个
<br><imgsrc="Handler1.ashx?path=d:2.jpg&width=120&height=90"alt=""/>
<br></div>
<br></div>
<br></form>
<br></body>
<br></html>
<br>
2.再建一个ashx文件
代码以下:
Code
<br>usingSystem.Web;
<br>
<br>namespaceAnts.Tools
<br>{
<br>publicclassHandler1:IHttpHandler
<br>{
<br>
<br>publicvoidProcessRequest(HttpContextcontext)
<br>{
<br>Imageimg=newImage();
<br>img.Path=context.Request.QueryString["path"].ToString();
<br>img.Width=context.Request.QueryString["width"].ToString().ToInt32();
<br>img.Height=context.Request.QueryString["height"].ToString().ToInt32();
<br>boolok=false;
<br>System.IO.MemoryStreamms=img.getThumb(outok);
<br>if(ok)
<br>context.Response.BinaryWrite(ms.ToArray());
<br>
<br>}
<br>
<br>publicboolIsReusable
<br>{
<br>get
<br>{
<br>returnfalse;
<br>}
<br>}
<br>}
<br>}
天生的效果以下
<br>
那张图和比例也太甚分啦。
来自:天生划一,美妙的缩略图
也不知道,我同学昨天说数据挖掘很好。 |
|