asp.net通过实现IHttpHandler接口方法给图片添加水印图片(动态添加,不破坏原图片,但是耗资源)
2010-12-08 14:28
1076 查看
添加一个类并实现IHttpHandler接口,类中需添加System.IO引用(类代码如下)
代码
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Drawing;
using System.IO;
/// <summary>
///waterH 的摘要说明
/// </summary>
public class waterH:IHttpHandler
{
public waterH()
{}
private const string WATERMARK_URL = "~/Images/Watermark.png";
private const string DEFAULTIMAGE_URL = "~/images/blank.gif";
public void ProcessRequest(HttpContext context)
{
System.Drawing.Image Cover;
if (File.Exists(context.Request.PhysicalPath))
{
Cover = Image.FromFile(context.Request.PhysicalPath);
Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));
Graphics g = Graphics.FromImage(Cover);
g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
g.Dispose();
watermark.Dispose();
}
else
{
Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));
}
context.Response.ContentType = "images/jpeg";
Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Cover.Dispose();
context.Response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
配置web.config文件:
在 <httpHandlers>节点中添加一下代码:
<add verb="*" path="Images/*.jpg" type="waterH"/><!--path为图片放置路径,type为新添加的实现IHttpHandler接口的类名称-->
配置IIS:如图
代码
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Drawing;
using System.IO;
/// <summary>
///waterH 的摘要说明
/// </summary>
public class waterH:IHttpHandler
{
public waterH()
{}
private const string WATERMARK_URL = "~/Images/Watermark.png";
private const string DEFAULTIMAGE_URL = "~/images/blank.gif";
public void ProcessRequest(HttpContext context)
{
System.Drawing.Image Cover;
if (File.Exists(context.Request.PhysicalPath))
{
Cover = Image.FromFile(context.Request.PhysicalPath);
Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));
Graphics g = Graphics.FromImage(Cover);
g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
g.Dispose();
watermark.Dispose();
}
else
{
Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));
}
context.Response.ContentType = "images/jpeg";
Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Cover.Dispose();
context.Response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
配置web.config文件:
在 <httpHandlers>节点中添加一下代码:
<add verb="*" path="Images/*.jpg" type="waterH"/><!--path为图片放置路径,type为新添加的实现IHttpHandler接口的类名称-->
配置IIS:如图
相关文章推荐
- asp.net继承IHttpHandler接口实现给网站图片添加水印功能实例
- asp .net实现给图片添加图片水印方法示例
- Asp.net全站图片加水印:实现IHttpHandler接口
- asp.net如何给每张图片动态添加水印方法(一)
- asp.net如何给每张图片动态添加水印方法(二)
- asp .net 为图片添加文字水印(内包含有加图片水印的方法,但尚未完善暂不能使用)
- asp.net动态添加图片水印
- 在MVC3或asp.net中修改KindEditor实现上传图片时添加水印
- asp.net实现图片添加文字及图片水印
- Asp.Net中动态实现图片水印
- Asp.net开发之webform图片水印和图片验证码的实现方法
- ASP.NET百度Ueditor编辑器实现上传图片添加水印效果
- asp .net 为图片添加文字水印(内包含有加图片水印的方法) .
- Asp.net MVC防止图片盗链的实现方法,通过自定义RouteHandler来操作
- asp.net后台动态添加JS文件和css文件的引用实现方法
- Asp.net 实现图片缩放 无水印(方法一)
- ASP.NET 给图片动态添加文字水印
- asp.net下用Aspose.Words for .NET动态生成word文档中的图片或水印的方法(转)
- Asp.net 实现图片缩放 无水印(方法二)