网站水印的实现
一般网站水印的实现:
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 }


浙公网安备 33010602011771号