ASP.NET编程:天生划一,美妙的缩略图仓酷云
竟发现没有太大的帮助。总觉得要用起来,感觉到不了位。因为公司机器的原因,一直没有安装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>
那张图和比例也太甚分啦。
来自:天生划一,美妙的缩略图
也不知道,我同学昨天说数据挖掘很好。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
页:
[1]