HttpHandler对象实现水印

实现水印图片

测试效果如下图:
注意左上角
在这里插入图片描述

创建web项目并新建HttpHandler类

如下图:
在这里插入图片描述
创建Images文件夹,并添加图片

编写HttpHdanler类

代码如下图:

public class TestHandler : IHttpHandler
    {
        //水印图片
        private const string WATERMARK_URL = "~/Images/watermark.png";
        //图片不存在,默认下显示图片
        private const string DEFAULTIMAGE_URL = "~/Images/1.jpg";

        public bool IsReusable
        {
            get { return false; }
        }

        public void ProcessRequest(HttpContext context)
        {
            //得到请求图片的物理路径
            string imgFilePath = context.Request.MapPath(context.Request.FilePath);
            //判断文件是否存在
            if (File.Exists(imgFilePath))
            {
                //根据图片路径实例化图片对象
                Image img = Image.FromFile(imgFilePath);
                //实例化画布
                Graphics g = Graphics.FromImage(img);
                //实体化一个字体对象
                Font font = new Font("宋体", 12);
                //得到画刷对象,颜色为红色
                Brush brush = Brushes.Red;
                //得到一个点对象,表示画水印的位置
                Point point = new Point(0, 0);
                //画图
                g.DrawString("独家制作", font, brush, point);
                //设置响应类型
                context.Response.ContentType = "image/jpeg";
                //将画好的图片,输出到响应流
                img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                //释放资源
                img.Dispose();
                g.Dispose();
                //结束响应
                context.Response.End();

            }

编写视图层前台代码

代码如下:

 <div>
            <img   src="Images/1.jpg" />
            <img  src="Images/2.jpg" />
            <img   src="Images/3.jpg" />
 </div>

如果觉得不好看可以适当的加一些css样式

最重要的一步是在配置文件里编写代码,配置文件就是,web.config文件。

需要的代码如下:

<system.webServer>
		<handlers>
			<add verb="*" path="Images/*.jpg" name="handler" type="_5._4.TestHandler"/>
		</handlers>
	</system.webServer>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值