Asp.net全站图片加水印:实现IHttpHandler接口
2012-12-14 09:45
323 查看
只要实现IHttpHandler接口就可以截获图片请求,实现自动加水印的功能。
首先,创建一个类,实现IHttpHandler接口,在ProcessRuquest方法下实现具体图片加水印逻辑,代码如下:
这里只是对请求的jpg文件加上水印,实际上本地的图片还是原图,若要对gif、png等图片加上水印,可在逻辑代码添加。
配置Web.Config文件,使jpg文件通过自己的handler处理,这样请求jpg图片就自动加上水印。在System.Web节点添加如下配置即可。
这样,对应jpg文件的请求都在ImageHandler类处理,具体需要其他功能比如缩略图等只要加上代码都可以处理。
首先,创建一个类,实现IHttpHandler接口,在ProcessRuquest方法下实现具体图片加水印逻辑,代码如下:
usingSystem.Drawing; usingSystem.Drawing.Drawing2D; usingSystem.Drawing.Imaging; usingSystem.IO; usingSystem.Web; namespaceMySite { publicclassImageHandler:IHttpHandler { #regionIHttpHandlerMembers publicvoidProcessRequest(HttpContextcontext) { context.Response.ContentType="image/jpeg"; stringpath=context.Request.PhysicalPath;//获取请求的图片在服务器的上的物理路径 if(File.Exists(path)) { Imageimage=Image.FromFile(path); if(image.Width>400&image.Height>400)//对于长宽都大于400px的图片才加水印 { Graphicsg=Graphics.FromImage(image); g.SmoothingMode=SmoothingMode.HighQuality; g.DrawString("水印文字",newFont("宋体",22,FontStyle.Bold),newSolidBrush(Color.Aquamarine),0,0); image.Save(context.Response.OutputStream,ImageFormat.Jpeg); g.Dispose(); } image.Dispose(); } else { context.Response.StatusCode=404; } context.Response.Flush(); context.Response.End(); } publicboolIsReusable { get{returnfalse;} } #endregion }
这里只是对请求的jpg文件加上水印,实际上本地的图片还是原图,若要对gif、png等图片加上水印,可在逻辑代码添加。
配置Web.Config文件,使jpg文件通过自己的handler处理,这样请求jpg图片就自动加上水印。在System.Web节点添加如下配置即可。
<httpHandlers>
<addpath="*.jpg"type="MySite.ImageHandler"verb="*"/>
</httpHandlers>
这样,对应jpg文件的请求都在ImageHandler类处理,具体需要其他功能比如缩略图等只要加上代码都可以处理。
相关文章推荐
- asp.net通过实现IHttpHandler接口方法给图片添加水印图片(动态添加,不破坏原图片,但是耗资源)
- asp.net继承IHttpHandler接口实现给网站图片添加水印功能实例
- ASP.NET 图片加水印防盗链实现代码
- Asp.Net中动态实现图片水印
- Asp.net 实现图片缩放 无水印(方法一)
- ASP.NET MVC 利用IRouteHandler, IHttpHandler实现图片防盗链
- 继承IHttpHandler接口实现给网站图片添加水印
- 在MVC3或asp.net中修改KindEditor实现上传图片时添加水印
- asp.net如何在图片上加水印文字具体实现
- Asp.net 实现图片缩放 无水印(方法二)
- Asp.net简单实现给图片增加文字水印
- asp.net中上传图片文件实现防伪图片水印并写入数据库
- ASP.NET图片加水印的实现代码
- ASP.NET百度Ueditor编辑器实现上传图片添加水印效果
- asp.net如何在图片上加水印文字具体实现
- asp.net实现图片添加文字及图片水印
- 在MVC3或asp.net中修改KindEditor实现上传图片时添加水印
- asp.net vs2008 不实现接口成员System.Web.IHttpHandler.IsReusable