zoukankan      html  css  js  c++  java
  • ASP.NET为图片加上水印

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

    首先是一个制作水印的类: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>

  • 相关阅读:
    C++类型前置声明
    Qt 引用头文件 QT_BEGIN_NAMESPACE QT_END_NAMESPACE
    Qt emit的使用
    特定于类的内存管理---《C++必知必会》 条款36
    C++深入理解虚函数
    使用网页预加载顶部进度条
    简单读取 properties文件
    win2012r2 关闭中英文悬浮小方框显示
    bootstrap的Alerts中 可以放置p标签 设置 align="center" 用来设置文本居中
    char和String 在jsp java代码中与jstl代码中的区别
  • 原文地址:https://www.cnblogs.com/ranran/p/3853300.html
Copyright © 2011-2022 走看看