网站水印的实现

一般网站水印的实现:

1)上传时就对图片加水印:

a) 每次用户访问时,直接给用户图片就行了.减小服务器端的压力.

b) 缺点:破坏了原有图片.如果网站换logo或改名

 

 

2)使用一般处理程序:

 

a) 每次用户请求都要进行水印的添加,增加了服务器端压力

 

b) 原图片被保存下来了.

 

View Code
 1  public class WaterMark : IHttpHandler
 2     {
 3 
 4         private const string WATERMARK_URL = "~/Images/watermark.jpg";        //水印图片
 5         private const string DEFAULTIMAGE_URL = "~/Images/default.jpg";  
 6 
 7 
 8         public void ProcessRequest(HttpContext context)
 9         {
10             context.Response.ContentType = "text/plain";
11             string isbn = context.Request.QueryString["isbn"];
12             //用户请求图片的url路径
13            string imgUrl= "~/images/bookcovers/" + isbn + ".jpg";
14             //用户请求图片的物理路径
15            string filePath = context.Server.MapPath(imgUrl);
16            Image Cover;
17 
18            if (File.Exists(filePath))
19            {
20                //加载文件
21                Cover = Image.FromFile(filePath);
22                //加载水印图片
23                Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));
24                //实例化画布
25                Graphics g = Graphics.FromImage(Cover);
26                //在image上绘制水印
27                g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
28                //释放画布
29                g.Dispose();
30                //释放水印图片
31                watermark.Dispose();
32            }
33            else
34            {
35                //加载默认图片
36                Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));
37            }
38            //设置输出格式
39            context.Response.ContentType = "image/jpeg";
40            //将图片存入输出流
41            Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
42            Cover.Dispose();
43            context.Response.End();
44 
45         }

 

 

posted @ 2012-09-21 15:45  NoDelay  阅读(128)  评论(0)    收藏  举报