<---web.config--里面要配置的文件--->
<httpHandlers>
<add verb="*" path="images/bg/*" type="CoverHandler"/>
</httpHandlers>
<--下面是具体加水印方法的类-->
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing;
/// <summary>
/// CoverHandler 的摘要说明
/// </summary>
public class CoverHandler:IHttpHandler
{
public CoverHandler()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private const string WATERMARK_URL = "~/images/bg/httpHander.png";
private const string DEFAULTIMAGE_URL = "~/images/bg/default.gif";
#region IHttpHandler 成员
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
System.Drawing.Image Conver;
if(File.Exists(context.Request.PhysicalPath))
{
//加载文件
Conver= this.CreateThumbnail(System.Drawing.Image.FromFile(context.Request.PhysicalPath),true);
//加载水印
System.Drawing.Image watermark = System.Drawing.Image.FromFile(context.Request.MapPath(WATERMARK_URL));
//实例画布
Graphics g=Graphics.FromImage(Conver);
//在Conver上绘制水印
g.DrawImage(watermark,new Rectangle(Conver.Width-watermark.Width,Conver.Height-watermark.Height-100,watermark.Width,watermark.Height),0,0,watermark.Width,watermark.Height,GraphicsUnit.Pixel);
//释放画布
g.Dispose();
//释放水印图片
watermark.Dispose();
}
else
{
//加载默认图片
Conver = System.Drawing.Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));
}
//设置输出格式
context.Response.ContentType="images/bg/jpeg";
//将图片存入输出流
Conver.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
Conver.Dispose();
context.Response.End();
}
System.Drawing.Image CreateThumbnail(System.Drawing.Image source, bool maintainAspect)
{
System.Drawing.Image ret = null;
try
{
int hi = 300;
int wi = 300;
// original code that creates lousy thumbnails
// System.Drawing.Image ret = source.GetThumbnailImage(wi,hi,null,IntPtr.Zero);
ret = new System.Drawing.Bitmap(wi, hi);
using (Graphics g = Graphics.FromImage(ret))
{
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.White, 0, 0, wi, hi);
g.DrawImage(source, 0, 0, wi, hi);
}
}
catch
{
throw;
ret = null;
}
return ret;
}
#endregion
}