回到目录

说在前

对于资源列表页来说,我们经常会把图像做成N多种,大图,小图,中图等等,很是麻烦,在数据迁移时,更是一种痛快,而如果你把图像资源部署到nginx上,那么这种图像缩放就变得很容易了,因为它有自己的过滤器来实现这个功能,只要程序员简单的配置即可(GraphicsMagick),其实在nginx上实现缩略图的方式有很多,而对于IIS服务来说,实现这种缩略图就没有直接的方法了,必须开发人员自己写代码来实现,下面解释两个比较早的技术(被执行的期间比较早,在页面渲染之前)HttpModule和httpHandler,这两个东西我在之前的文章中也已经讲过,细节不再重复。[HttpModule几大事件,HttpHandler实现图像防盗链]

做在后

一 HttpModule对URL地址进行重写,将扩展名为jpg,jpeg,png,gif结尾的URL地址进行复写,让它支持漂亮的缩略图参数,如原地址为:new1.jpg,实现缩略图原地址为:new1.jpg?w=100&h=100,进行Url重写后的漂亮地址为:new1_100x100.jpg,怎么样,是否是很漂亮,有点像MVC 的router吧,呵呵

    /// <summary>
/// 实现URL的重写
/// </summary>
public class UrlRewriteModule : IHttpModule
{
#region IHttpModule 成员 public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(Application_BeginRequest);
}
/// <summary>
/// url重写
/// .png?w=100&h=100
/// _100x100.png
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_BeginRequest(Object sender, EventArgs e)
{
string oldUrl = HttpContext.Current.Request.RawUrl;
if (oldUrl.LastIndexOf(".") > -)
{
string ext = oldUrl.Substring(oldUrl.LastIndexOf(".")).ToLower();
//是图像文件
if (ext == ".jpg"
||
ext == ".jpeg"
||
ext == ".png"
||
ext == "gif")
{
var param = oldUrl.Substring(oldUrl.LastIndexOf("_") + , (oldUrl.IndexOf(".") - oldUrl.LastIndexOf("_") - )).Split(new char[] { 'x' }, StringSplitOptions.RemoveEmptyEntries);
//有图像缩放请求
if (oldUrl.LastIndexOf("_") > -)
{
string newUrl = oldUrl.Substring(, oldUrl.LastIndexOf("_"));
newUrl = string.Format(newUrl + ext + "?w={0}&h={1}", param[], param[]);
//将请求中的URL进行重写
HttpContext.Current.RewritePath(newUrl);
}
}
} } #endregion #region IHttpModule 成员 public void Dispose()
{
} #endregion
}

二 使用HttpHandler进行对图像的缩放,你的服务器是指与图像资源在一起的那台电脑

    /// <summary>
/// 图片动态缩放处理程序
/// </summary>
public class ImageScalingHandler : IHttpHandler
{
/// <summary>
/// 图像等比例缩放,图像默认为白色
/// </summary>
/// <param name="image"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns></returns>
private Bitmap CreateThumbnail(Image image, int width, int height)
{
Point point = new Point(, ); //图像从那个坐标点进行截取
double wRate = , hRate = , setRate = ;
int newWidth = , newHeight = ;
try
{
if (width == ) width = image.Width;
if (height == ) height = image.Height; if (image.Height > height)
{
hRate = (double)height / image.Height;
} if (image.Width > width)
{
wRate = (double)width / image.Width;
} if (wRate != || hRate != )
{
if (wRate > hRate)
{
setRate = hRate;
}
else
{
setRate = wRate;
}
} newWidth = (int)(image.Width * setRate);
newHeight = (int)(image.Height * setRate);
if (height > newHeight)
{
point.Y = Convert.ToInt32(height / - newHeight / );
}
if (width > newWidth)
{
point.X = Convert.ToInt32(width / - newWidth / );
} Bitmap bit = new Bitmap(width, height);
Rectangle r = new Rectangle(point.X, point.Y, (int)(image.Width * setRate), (int)(image.Height * setRate));
Graphics g = Graphics.FromImage(bit);
g.Clear(Color.White);
g.DrawImage(image, r);
g.Dispose();
return bit;
}
catch (Exception)
{
throw;
}
} /// <summary>
/// 处理请求
/// </summary>
/// <param name="context"></param>
public void ProcessRequest(HttpContext context)
{
int w = , h = ;
int.TryParse(context.Request.QueryString["w"], out w);
int.TryParse(context.Request.QueryString["h"], out h);
Image image = Image.FromFile(context.Request.PhysicalPath);
context.Response.ContentType = "image/jpeg";
Bitmap bitMap = CreateThumbnail(image, w, h);
bitMap.Save(context.Response.OutputStream, ImageFormat.Jpeg);
image.Dispose();
bitMap.Dispose();
context.Response.End();
} public bool IsReusable
{
get { return false; }
}
}

三 最后就是在Module和Handler的入口配置的,即如何将它们加入到当然网站中,我们采用web.config配置的方法

 <system.web>
<httpModules>
<!-- this is for Classic mode and Cassini -->
<add name="UrlRewriteModule" type="EntityFrameworks.Web.Core.HttpModules.UrlRewriteModule,EntityFrameworks.Web.Core" />
</httpModules>
</system.web>
<system.webServer>

    <modules runAllManagedModulesForAllRequests="true" >
<!--This is for Integrated mode-->
<add name="UrlRewriteModule" type="EntityFrameworks.Web.Core.HttpModules.UrlRewriteModule,EntityFrameworks.Web.Core" />
</modules> <handlers>
<add name="ImageFunction1" path="*.jpg" verb="GET" type="EntityFrameworks.Web.Core.HttpHandlers.ImageScalingHandler,EntityFrameworks.Web.Core" />
<add name="ImageFunction2" path="*.png" verb="GET" type="EntityFrameworks.Web.Core.HttpHandlers.ImageScalingHandler,EntityFrameworks.Web.Core" />
<add name="ImageFunction3" path="*.gif" verb="GET" type="EntityFrameworks.Web.Core.HttpHandlers.ImageScalingHandler,EntityFrameworks.Web.Core" />
<add name="ImageFunction4" path="*.jpeg" verb="GET" type="EntityFrameworks.Web.Core.HttpHandlers.ImageScalingHandler,EntityFrameworks.Web.Core" />
</handlers>

从上面的代码中,我们可以看到,对于modules来说,那有两种方式注入,一为IIS经典模式下的,另一种是IIS集成模式下的,我们需要分别进行配置。

可以看一下效果,成功的喜悦!

aaarticlea/png;base64,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" alt="" />

大叔框架集又一成功组件...

aaarticlea/png;base64,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" alt="" />

回到目录

我心中的核心组件~HttpHandler和HttpModule实现图像的缩放与Url的重写的更多相关文章

  1. 我心中的核心组件(可插拔的AOP)~大话开篇及目录

    回到占占推荐博客索引 核心组件 我心中的核心组件,核心组件就是我认为在项目中比较常用的功能,如日志,异常处理,消息,邮件,队列服务,调度,缓存,持久化,分布式文件存储,NoSQL存储,IoC容器,方法 ...

  2. httphandler和httpmodule的区别

    ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHandler,HttpHandler处理完之后,仍经过Pi ...

  3. 选择HttpHandler还是HttpModule?

    阅读目录 开始 理解ASP.NET管线 理解HttpApplication 理解HttpHandler 理解HttpModule 三大对象的总结 案例演示 如何选择? 最近收到几个疑问:HttpHan ...

  4. 我心中的核心组件~MSMQ与Redis队列

    回到目录 这个文章其实是我心中的核心组件的第七回,确实在时间上有些滞后了,但内容并不滞后!本文MSMQ只是个引题,我确实不太想说它,它是微软自己集成的一套消息队列,寄宿在Window服务里,稳定性十在 ...

  5. (转)HttpHandler与HttpModule的理解与应用

    神秘的HttpHandler与HttpModule 大学时候我是从拖控件开始学习 asp.net的,对.net的很多类库对象都不是很了解.所以看到大家写一些个性的asp.net名词,就感觉asp.ne ...

  6. 3.httphandler和httpmodule各种的作用以及工作原理?

    首先应该知道的是ASP.NET 请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,ASP.NET 把http请求依次传递给管道中各个HttpModul ...

  7. HttpHandler与HttpModule的用处与区别

    问题1:什么是HttpHandler? 问题2:什么是HttpModule? 问题3:什么时候应该使用HttpHandler什么时候使用HttpModule? 答案1:HttpHandler,Http ...

  8. httphandler与httpmodule区别

    1.配置不同: <httpModules> <!--name表示类名,BtEd2k.UILogic表示命名空间--> <add name="Common&quo ...

  9. HttpHandler与HttpModule及实现文件下载

    HttpHandler:处理请求(Request)的信息和发送响应(Response).HttpModule:通过Http Module向Http请求输出流中写入文字,httpmodule先执行 它们 ...

随机推荐

  1. 换行(\r)和回车(\n)

    主要摘录自2篇blog: http://www.cnblogs.com/clarkchen/archive/2011/06/02/2068609.html http://www.360doc.com/ ...

  2. windows守护进程脚本

    通常通过进程名称或者端口号来判断进程是否正在运行.但是windows下进程名常常难以区分,比如有两个python脚本程序A和B同时在执行,进程名都是python.exe.若是通过端口来区分,却又只适用 ...

  3. js获取div相对屏幕的坐标位置

    1:div相对屏幕的坐标位置 function getDivPosition(div){ var x = div.getBoundingClientRect().left; var y = div.g ...

  4. 易学PHP——WAMP环境搭建

    安装前的准备 查看本机的类型(x86/x64,即 32 位还是 64 位) 安装好 VC9/VC11/VC14 运行库(需要按照本机的类型选择安装) 创建好一个安装路径用于安装整套 amp 环境(我使 ...

  5. Android adb常用指令

    Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态. 可以通过下列几种方法加入adb: 在设备上运行shell命令 通过端口转发来管理模拟器或设备 从模拟器或 ...

  6. java 堆栈的区别(转百度)

    转:http://zhidao.baidu.com/link?url=Y1XnuCnTiw6BsUoW85MWSx_x7k0QAS39kz4dTy9ngkMkZjvlSEHVfdflOGVWs6TcH ...

  7. 黑马程序员_Java基础:反射机制(Reflection)总结

    ------- android培训.java培训.期待与您交流! ---------- 反射在java中有非常重大的意义,它是一种动态的相关机制,可以于运行时加载.探知.使用编译期间完全未知的clas ...

  8. new的原罪

    一直以为在开发阶段能够直接调用的,速度而言一定是最优秀的,因为总比后期通过反射之类来调用来得快吧. 下面请看一个SB的例子,重新编译以后,这个类在创建100,000,000实体时居然耗费了16秒的时间 ...

  9. hdu acm 1425 sort(哈希表思想)

    sort Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  10. 读书笔记之深入理解Nginx:模块开发与结构解析

    前言 我现在看书一般都是看自己能看懂的地方,看不懂就先略过,回头再看,下面就写自己看得懂的地方吧,并且把自己的理解也放到里面. 第一部分 Nginx能帮我们做什么 编译安装各个命令解释 configu ...