网站图片自动添加水印(全局Handler方式)

创建一个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 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/JPSite/p/3418596.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值