使用一般处理程序(IHttpHandler)制作图片水印
2021-07-09 15:04
标签:text server web path 图片路径 保存到文件 做网站 put proc 做网站的时候经常需要将图片加上网站名称的水印。这样做可以使别人转载图片的时候出现图片出处 ,利于网站宣传。但是如果利用ps来一个一个加水印工作量非常浩大,而且修改了之后就没法还原。这 篇教程教大家利用一般处理程序(Handler)制作图片水印,这种水印的优点是一经修改全站适用,而且不改变原来的图片。 制作水印分为两种方法,一种是利用局部Handler,给指定路径的图片添加水印;另一种是利用全局Handler。前者可以灵活的选择指定的图片添加水印,但是不方便的是每次做链接的时候都要 加入Handler地址,不利于整体修改。而后者是指定文件夹里的图片都加水印。 一、局部Handler: 1.添加一般处理程序WaterMarkHandler.ashx。 2.在aspx页面中调用HttpHandler: 这样当Image控件访问Handler的时候就可以输出图片了。 二、全局Handler: 这个方法不需要创建HttpHandler.ashx,只需要在App_Code文件夹里面创建一个类即可,然后在配置文件中指定这个类,而在aspx访问图片的页面不需要任何改变: 1.配置Web.config: 2.全局Handler WaterMarkHandler的代码: 使用一般处理程序(IHttpHandler)制作图片水印 标签:text server web path 图片路径 保存到文件 做网站 put proc 原文地址:http://www.cnblogs.com/fujinliang/p/7092483.html
using System;
using System.Web;
using System.IO;
using System.Drawing;
public class WaterMarkHandler : IHttpHandler {
string waterPath = "~/images/1/WaterMark.png";//水印图片路径
string defaultPath = "~/images/1/default.jpg";//默认图片路径
public void ProcessRequest (HttpContext context) {
string coverPath =context.Server.MapPath(context.Request.Params["path"]);
Image cover;
if (File.Exists(coverPath))
{
//加载图片
cover = Image.FromFile(coverPath);
//加载水印图片
Image water = Image.FromFile(context.Request.MapPath(waterPath));
//实例化画布
Graphics g = Graphics.FromImage(cover);
//绘制图片
g.DrawImage(water, new Rectangle(cover.Width - water.Width, cover.Height - water.Height, water.Width, water.Height), 0, 0, water.Width,water.Height,GraphicsUnit.Pixel);
//释放画布
g.Dispose();
//释放水印
water.Dispose();
}
else//没有图片,显示默认图片
{
cover = Image.FromFile(context.Request.MapPath(defaultPath));
}
context.Response.ContentType = "image/jpeg";
cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
cover.Dispose();
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;
using System.IO;
///
文章标题:使用一般处理程序(IHttpHandler)制作图片水印
文章链接:http://soscw.com/essay/102821.html