黑马程序员技术交流社区

标题: Asp.Net给图片附加水印 [打印本页]

作者: 咖喱猫    时间: 2013-8-12 22:57
标题: Asp.Net给图片附加水印
本帖最后由 咖喱猫 于 2013-8-12 22:58 编辑

在课堂上学到的给指定目录下的所有图片附加指定水印;
需要创建一个类并且继承:IHttpHandler
代码如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Drawing;
  6. using System.Drawing.Imaging;
  7. using System.IO;
  8. /// <summary>
  9. ///CoverHandler 的摘要说明
  10. /// </summary>
  11. public class CoverHandler:IHttpHandler
  12. {
  13. //所有需要添加水印图片的路径
  14. public const string oldImageUrl = "~/admin/BookConvers/";
  15. //水印图片
  16. public const string waterUrl = "~/admin/images/WaterMark.jpg";
  17. //默认图片
  18. public const string DefaultImage = "~/admin/images/Default.jpg";
  19. public CoverHandler()
  20. {
  21. //
  22. //TODO: 在此处添加构造函数逻辑
  23. //
  24. }
  25. public void ProcessRequest(HttpContext context)
  26. {
  27. //string path = context.Request.MapPath(oldImageUrl+context.Request.Params["ISBN"]+".jpg");
  28. System.Drawing.Image Cover;
  29. //判断请求的物理路径中,是否存在文件
  30. if (File.Exists(context.Request.PhysicalPath))
  31. {
  32. //加载文件
  33. //Cover= Image.FromFile(context.Request.PhysicalPath);
  34. Cover = Image.FromFile(context.Request.PhysicalPath);
  35. //加载水印图片
  36. Image watermark = Image.FromFile(context.Request.MapPath(waterUrl));
  37. //实例化画布
  38. Graphics g = Graphics.FromImage(Cover);
  39. //在Cover上绘制水印
  40. g.DrawImage(watermark, new Point(Cover.Width - watermark.Width, Cover.Height - watermark.Height));
  41. //释放画布
  42. g.Dispose();
  43. //释放水印图片
  44. watermark.Dispose();
  45. //保存输出流
  46. Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
  47. //结束输出
  48. Cover.Dispose();
  49. context.Response.End();
  50. }
  51. else
  52. {
  53. Cover = Image.FromFile(context.Request.MapPath(DefaultImage));
  54. }
  55. }
  56. public bool IsReusable
  57. {
  58. get
  59. {
  60. return false;
  61. }
  62. }
  63. }
复制代码
配置文件:
  1. <add verb="*" path="admin/BookCovers/*.jpg" type="CoverHandler"/>
  2. </httpHandlers>
复制代码
由于图片的大小会影响水印在图片中的位置,尽量使用大小相同的图片。
水印效果图:




作者: 彭家贰小姐    时间: 2013-8-12 23:31
{:soso_e179:} 很厉害呀
作者: 咖喱猫    时间: 2013-8-12 23:33
彭家贰小姐 发表于 2013-8-12 23:31
很厉害呀

学校教的:lol
作者: 熊丽    时间: 2013-8-12 23:42
强大哟,亲!
作者: 咖喱猫    时间: 2013-8-13 18:56
熊丽 发表于 2013-8-12 23:42
强大哟,亲!

:victory:还好啦,不知道外面企业是怎么搞这里的
作者: 胡盼盼    时间: 2013-8-15 14:42
{:soso_e183:}
作者: 咖喱猫    时间: 2013-8-15 18:51
胡盼盼 发表于 2013-8-15 14:42

{:soso__330544071448149850_1:}

作者: 胡盼盼    时间: 2013-8-15 18:58
咖喱猫 发表于 2013-8-15 18:51

掌声响起{:soso_e142:}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2