熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

asp.net中水印的實現代碼

2013-11-13 10:26:01  來源: .NET編程 

  水印是為了防止別盜用我們的圖片

  兩種方式實現水印效果

  )可以在用戶上傳時添加水印

  a) 好處:與種方法相比用戶每次讀取此圖片時服務器直接發送給客戶就行了

  b) 缺點:破壞了原始圖片

  )通過全局的一般處理程序當用戶請求這張圖片時加水印

  a) 好處:原始圖片沒有被破壞

  b) 缺點:用戶每次請求時都需要對請求的圖片進行加水印處理浪費的服務器的資源

  代碼實現第二種方式

  using System;

  using SystemCollectionsGeneric;

  using SystemLinq;

  using SystemWeb;

  using SystemDrawing;

  using SystemIO;

  namespace BookShopWeb

  {

  public class WaterMark : IHttpHandler

  {

  private const string WATERMARK_URL = ~/Images/watermarkjpg; //水印圖片

  private const string DEFAULTIMAGE_URL = ~/Images/defaultjpg; //默認圖片

  #region IHttpHandler 成員

  public bool IsReusable

  {

  get { return false; }

  }

  public void ProcessRequest(HttpContext context)

  {

  //contextRequestPhysicalPath //獲得用戶請求的文件物理路徑

  SystemDrawingImage Cover;

  //判斷請求的物理路徑中是否存在文件

  if (FileExists(contextRequestPhysicalPath))

  {

  //加載文件

  Cover = ImageFromFile(contextRequestPhysicalPath);

  //加載水印圖片

  Image watermark = ImageFromFile(contextRequestMapPath(WATERMARK_URL));

  //通過書的封面得到繪圖對像

  Graphics g = GraphicsFromImage(Cover);

  //在image上繪制水印

  gDrawImage(watermark new Rectangle(CoverWidth watermarkWidth CoverHeight watermarkHeight

  [csharp] view plaincopy

  watermarkWidth watermarkHeight) watermarkWidth watermarkHeight GraphicsUnitPixel);

  //釋放畫布

  gDispose();

  //釋放水印圖片

  watermarkDispose();

  }

  else

  {

  //加載默認圖片

  Cover = ImageFromFile(contextRequestMapPath(DEFAULTIMAGE_URL));

  }

  //設置輸出格式

  contextResponseContentType = image/jpeg;

  //將圖片存入輸出流

  CoverSave(contextResponseOutputStream SystemDrawingImagingImageFormatJpeg);

  CoverDispose();

  contextResponseEnd();

  }

  #endregion

  }

  }


From:http://tw.wingwit.com/Article/program/net/201311/13604.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.