ASP.NET为图片加上水印

8/10/2015来源:ASP.NET技巧人气:1834

asp.net为图片加上水印

为我们发布的图片加上一个水印,也是我们经常要做的事情,那怎么样来做呢,下面就一步步开始吧

首先是一个制作水印的类:ImageHandler,代码如下:

C#代码
  1. usingSystem;
  2. usingSystem.IO;
  3. usingSystem.Drawing;
  4. usingSystem.Drawing.Imaging;
  5. usingSystem.Data;
  6. usingSystem.Configuration;
  7. usingSystem.Linq;
  8. usingSystem.Web;
  9. usingSystem.Web.Security;
  10. usingSystem.Web.UI;
  11. usingSystem.Web.UI.HtmlControls;
  12. usingSystem.Web.UI.WebControls.WebParts;
  13. usingSystem.xml.Linq;
  14. ///<summary>
  15. ///ImageHandler的摘要说明
  16. ///</summary>
  17. publicclassImageHandler:IHttpHandler
  18. {
  19. PRivateconststringwaterMark_URL="~/Images/waterMark.jpg";
  20. privateconststringdefaultImage_URL="~/Images/Default.jpg";
  21. publicImageHandler()
  22. {
  23. //
  24. //TODO:在此处添加构造函数逻辑
  25. //
  26. }
  27. publicvoidProcessRequest(HttpContextcontext)
  28. {
  29. System.Drawing.ImageImageConver;
  30. if(File.Exists(context.Request.PhysicalPath))
  31. {
  32. //加载文件
  33. ImageConver=Image.FromFile(context.Request.PhysicalPath);
  34. //加载水印图片
  35. ImagewaterMark=Image.FromFile(context.Request.MapPath(waterMark_URL));
  36. //重新画布
  37. Graphicsg=Graphics.FromImage(ImageConver);
  38. g.DrawImage(waterMark,newRectangle(ImageConver.Width-waterMark.Width,ImageConver.Height-waterMark.Height,waterMark.Width,waterMark.Height),0,0,waterMark.Width,waterMark.Height,GraphicsUnit.Pixel);
  39. g.Dispose();
  40. waterMark.Dispose();
  41. }
  42. else
  43. {
  44. ImageConver=Image.FromFile(context.Request.MapPath(defaultImage_URL));
  45. }
  46. //设置输出格式
  47. context.Response.ContentType="image/jpeg";
  48. ImageConver.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
  49. ImageConver.Dispose();
  50. context.Response.End();
  51. }
  52. publicboolIsReusable
  53. {
  54. get
  55. {
  56. returnfalse;
  57. }
  58. }
  59. }

接下来,我们要做一个很关键的配置,那就是在Web.Config文件中加入如下一句话

<httpHandlers>

<!--图片水印--> <add verb="*" path="Images/*.jpg" type="ImageHandler"/>

</httpHandlers>