A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 咖喱猫 中级黑马   /  2013-8-12 22:57  /  1563 人查看  /  7 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 咖喱猫 于 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>
复制代码
由于图片的大小会影响水印在图片中的位置,尽量使用大小相同的图片。
水印效果图:



7 个回复

倒序浏览
{:soso_e179:} 很厉害呀
回复 使用道具 举报

学校教的:lol
回复 使用道具 举报
强大哟,亲!
回复 使用道具 举报

:victory:还好啦,不知道外面企业是怎么搞这里的
回复 使用道具 举报
{:soso_e183:}
回复 使用道具 举报

{:soso__330544071448149850_1:}
回复 使用道具 举报

掌声响起{:soso_e142:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马