醉清风2

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

创建一个CoverHandler类实现IHttpHandler

 

using System;

using System.Web;

using System.IO;

using System.Drawing;

using System.Drawing.Imaging;

/// <summary>

///CoverHandler 的摘要说明

/// </summary>

publicclassCoverHandler:IHttpHandler

{

    //数字水印路径

    privateconststring WATEMARK_URL ="~/Images/WaterMark.jpg";

    //默认图片的路径

    privateconststring DEFAULT_URL ="~/Images/default.jpg";

    publicCoverHandler()

    {

    }

    #region IHttpHandler 成员

    publicvoidProcessRequest(HttpContext context)

    {

        System.Drawing.Image Cover;

        if(File.Exists(context.Request.PhysicalPath))

        {

            //加载文件

            Cover = Image.FromFile(context.Request.PhysicalPath);

            //加载水印图片

            Image watemark = Image.FromFile(context.Request.MapPath(WATEMARK_URL));

            //实例化画布

            Graphics g = Graphics.FromImage(Cover);

            //在Cover上绘制水印

            g.DrawImage(watemark,

                newRectangle(Cover.Width - watemark.Width, Cover.Height - watemark.Height, watemark.Width, watemark.Height),

                0,0, watemark.Width, watemark.Height, GraphicsUnit.Pixel);

            //释放画布

            g.Dispose();

            //释放水印图片

            watemark.Dispose();

        }

        else

        {

            Cover = Image.FromFile(context.Request.MapPath(DEFAULT_URL));

        }

        //设置输出格式

        context.Response.ContentType ="image/jpeg";

        //将图片存入输入流

        Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

        Cover.Dispose();

        context.Response.End();

    }

    publicbool IsReusable

    {

        get{returnfalse; }

    } 

    #endregion

}

 

然后再配置文件中添加以下代码

 

1
2
3
<httpHandlers>
    <add verb="*"path="Images/BookCovers/*.jpg"type="CoverHandler"/>
</httpHandlers>

verb:代表谓词(比如:GET、POST、FTP)列表。可以写作“GET”,“POST”。“*”为通配符,表示所有请求。

path:访问路径。此处表示所有访问“Images/BookCovers/*.jpg “ 路径的请求都将交给CoverHandler类进行处理。“*”为通配符

type:指定的类/程序集组合

 

运行看下效果。OK了。发布IIS一看没效果,我们还需配置IIS。

 

 

点配置

 

点添加

 

点浏览,找一个名为aspnet_isapi.dll。注意要选择当前版本的aspnet_isapi.dll

 

 

 

扩展名 为jpg, 检查文件是否存在 前面的勾要去掉。然后就OK了。

posted on 2013-11-11 22:19  醉清风2  阅读(849)  评论(1编辑  收藏  举报