博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET为图片加上水印
阅读量:7052 次
发布时间:2019-06-28

本文共 1710 字,大约阅读时间需要 5 分钟。

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

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

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

 

 

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

<httpHandlers>

<!--图片水印-->

      <add verb="*" path="Images/*.jpg" type="ImageHandler"/>

</httpHandlers>

转载地址:http://zesol.baihongyu.com/

你可能感兴趣的文章
一种Android的多平台的安装包打包方法探究
查看>>
观察者模式
查看>>
【转】PHP中的Hash算法
查看>>
SqlLite的工具类SQLiteOpenHelper
查看>>
chgrp chown chmod
查看>>
nodejs中安装express
查看>>
2014软件表
查看>>
Struts2教程3:struts.xml常用配置解析
查看>>
(转帖)Implementing custom JavaFx Bindings
查看>>
mysql外键
查看>>
转发和重定向的区别
查看>>
<ecmall> ECMall的MySQL数据库调用
查看>>
SugarCRM - 如何修改默认首页
查看>>
Java日期类总结
查看>>
开关标识一个是0一个是-那个是开哪个是关
查看>>
ruby的并发和并行
查看>>
朱晶晶-六步制定好企业移动化战略
查看>>
SVPullToRefresh
查看>>
SSIndicatorLabel
查看>>
ASFBPostController
查看>>