當直接請求網站中images目錄下的.jpg圖片時把圖片加上水印,而後輸出html
一、在web.config中設置一個全局應用程序來處理該目錄下的請求web
<System.Web>
<httpHandlers>
<add verb=
"*"
path=
"images/*.jpg"
type=
"WaterMarker"
>
|
二、建立一個處理水印的類,對應type中的WaterMarkeride
1 using System; 2 using System.Web; 3 using System.Drawing; 4 5 /// <summary> 6 ///WaterMarker 的摘要說明 7 /// </summary> 8 public class WaterMarker:IHttpHandler 9 { 10 public bool IsReusable 11 { 12 get { return false; } 13 } 14 15 public void ProcessRequest(HttpContext context) 16 { 17 context.Response.ContentType = "image/jpeg"; 18 //獲取報文中的路徑 19 string rawUrl = context.Request.RawUrl; 20 //原始圖片地址 21 string path = context.Request.MapPath(rawUrl); 22 //logo圖片的地址 23 string logoPath = context.Request.MapPath("../logo.png"); 24 //添加水印 25 using (Image Img = Image.FromFile(path)) 26 { 27 using (Image logo = Image.FromFile(logoPath)) 28 { //建立畫布 29 Graphics g = Graphics.FromImage(Img); 30 //設置logo位置右下角 31 g.DrawImage(logo,Img.Width-logo.Width-10,Img.Height-logo.Height); 32 //輸出圖片 33 Img.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); g.Dispose(); 34 } 35 } 36 37 } 38 public WaterMarker() 39 { 40 // 41 //TODO: 在此處添加構造函數邏輯 42 // 43 } 44 }