public class WaterImgHandler:IHttpHandler
2 {
3
4 public bool IsReusable
5 {
6 get { return false; }
7 }
8
9 public void ProcessRequest(HttpContext context)
10 {
11 // 指定水印图片
12 string water_Url = "~/wImages/logo.gif";
13 // 指定默认图片
14 string default_Url = "~/wImages/error.jpg";
15 // 创建图片对象,用于存放用户读取的图片
16 System.Drawing.Image g;
17 // 判断所请求的图片是否存在,存在就给图片加水印
18 if (File.Exists(context.Request.PhysicalPath))
19 {
20 g = System.Drawing.Image.FromFile(context.Request.PhysicalPath);
21 // 加载水印图片
22 System.Drawing.Image waterImg = System.Drawing.Image.FromFile(context.Request.MapPath(water_Url));
23 Graphics gh = Graphics.FromImage(g);
24 gh.DrawImage(waterImg, new RectangleF(0, g.Height - waterImg.Height, 100, 20));
25
26 // 加载水印字符串
27 Font font = new System.Drawing.Font("Arial", 6, System.Drawing.FontStyle.Bold);
28 gh.DrawString("abcdefg", font, Brushes.White, 2, 2);
29 gh.Dispose();
30 waterImg.Dispose();
31 }
32 else {
33 // 图片不存在,显示默认图片
34 g = System.Drawing.Image.FromFile(context.Request.MapPath(default_Url));
35 }
36 context.Request.ContentType = "image/jpeg";
37 g.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
38 g.Dispose();
39 context.Response.End();
40
41 }
42 }
43 // 最后在配置文件Web.config中写
44 <httpHandlers>
45 <add verb="*" path="*.jpg" type="Picture.WaterImgHandler"/>
46 </httpHandlers>