仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1094|回复: 12
打印 上一主题 下一主题

[学习教程] ASP.NET编程:天生划一,美妙的缩略图仓酷云

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:28:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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>

那张图和比例也太甚分啦。
来自:天生划一,美妙的缩略图
也不知道,我同学昨天说数据挖掘很好。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-21 07:45:21 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
小魔女 该用户已被删除
板凳
发表于 2015-1-24 12:46:02 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
飘灵儿 该用户已被删除
地板
发表于 2015-1-25 19:51:03 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
老尸 该用户已被删除
5#
发表于 2015-2-2 22:11:11 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
只想知道 该用户已被删除
6#
发表于 2015-2-4 12:53:58 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
小女巫 该用户已被删除
7#
发表于 2015-2-6 16:43:09 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
小妖女 该用户已被删除
8#
发表于 2015-2-7 23:52:04 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
9#
 楼主| 发表于 2015-2-9 00:58:58 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-8 16:02:23 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
兰色精灵 该用户已被删除
11#
发表于 2015-3-11 09:45:20 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
柔情似水 该用户已被删除
12#
发表于 2015-3-18 03:16:00 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
再现理想 该用户已被删除
13#
发表于 2015-3-25 10:28:36 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-18 11:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表