`
raisun_1988
  • 浏览: 117889 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

asp.net动态添加图片水印

    博客分类:
  • .Net
阅读更多

 

【网上购物论坛】-IT泡吧![Www.itpob.Cn]网上购物社区! - Powered by Discuz!
http://www.itpob.cn/

 

例子1:

web.config

 

  1. <httpHandlers>  
  2.             <remove verb="*" path="*.asmx"/>  
  3.             <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>  
  4.             <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>  
  5.             <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>  
  6.             <add verb="*" path="images/shangjia/*/*.jpg"  type="CoverHandler"/>  
  7.             <add verb="*" path="images/shangjia/*/*/*.jpg"  type="CoverHandler"/>  
  8.             <add verb="*" path="admin/TotalUpImg/VedioImg/*.jpg" type="CoverHandler1"/>  
  9.         </httpHandlers>  

 

CoverHandler.cs

 

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.IO;  
  6. using System.Drawing;  
  7. using System.Drawing.Imaging;  
  8.   
  9. /// <summary>  
  10. /// CoverHandler 的摘要说明  
  11. /// </summary>  
  12. public class CoverHandler : IHttpHandler  
  13. {  
  14.     public CoverHandler()  
  15.     {  
  16.         //  
  17.         // TODO: 在此处添加构造函数逻辑  
  18.         //  
  19.     }  
  20.     private const string WATERMARK_URL = "~/images/WaterMark.png";  
  21.     private const string DEFAULTIMAGE_URL = "~/images/default.jpg";  
  22.     #region IHttpHandler 成员  
  23.   
  24.   
  25.     public void ProcessRequest(HttpContext context)  
  26.     {  
  27.         System.Drawing.Image Cover;  
  28.         if (File.Exists(context.Request.PhysicalPath))  
  29.         {  
  30.             Cover = Image.FromFile(context.Request.PhysicalPath);  
  31.             Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));  
  32.             Graphics g = Graphics.FromImage(Cover);  
  33.             Random r = new Random();  
  34.             int width = r.Next(10,Cover.Width - watermark.Width);  
  35.             int height = r.Next(10,Cover.Height - watermark.Height);  
  36.             g.DrawImage(watermark, new Rectangle(width, height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);  
  37.             g.Dispose();  
  38.             watermark.Dispose();  
  39.         }  
  40.         else  
  41.         {  
  42.             Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));  
  43.         }  
  44.         context.Response.ContentType = "image/Jpeg";  
  45.         Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);  
  46.         Cover.Dispose();  
  47.         context.Response.End();  
  48.   
  49.     }  
  50.     public bool IsReusable  
  51.     {  
  52.         get  
  53.         {  
  54.             return false;  
  55.         }  
  56.     }  
  57.  
  58.     #endregion  
  59. }  

例子2:

WaterMarke.cs 类 code

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
/// <summary>
/// WaterMarker 的摘要说明
/// </summary>
public class WaterMarker : IHttpHandler
{
    public WaterMarker()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }
    public bool IsReusable
    {
        get { return true; }
    }
    public void ProcessRequest(HttpContext context)
    {
        //获取请求的物理路径
        string imagePath = context.Request.PhysicalPath;
        System.Drawing.Image image = null;
        //判断指定的物理路径是否存在
        if (File.Exists(imagePath))
        {
            //定义水印文字
            string text = "本图片来自夏楚枫的博客";
            //定义水印文字字体的大小
            int fontSize = 12;
            //水印文字字体
            Font font = new Font("宋体", fontSize);
            //根据图片的物理路径加载图片
            image = System.Drawing.Image.FromFile(imagePath);
            Graphics g = Graphics.FromImage(image);
            //获取要绘制水印文字所需要区域的大小
            SizeF size = g.MeasureString(text, font);
            if (size.Width > image.Width || size.Height > image.Height)
            {
                //如果要显示图片的尺寸都不足以显示按照指定文字字体来添加水印
                //可以减小的字体的大小或者不添加水印(太小了没办法添加嘛)
            }
            else
            {
                //添加水印文字
                Brush br = Brushes.Red;
                g.DrawString(text, font, br, image.Width - size.Width, image.Height - size.Height);
                g.Dispose();
            }

        }
        else //如果不存在指定一个默认的图片进行显示
        {
            imagePath = context.Server.MapPath("~/image/default.jpg");
            image = System.Drawing.Image.FromFile(imagePath);
        }
        image.Save(context.Response.OutputStream, ImageFormat.Jpeg);//将添加水印的图片输出

    }
}

 

webconfig 中的配置 

方法一:在所在文件夹添加一个webconfig文件,然后再在
 <system.web>节点中添加下面的代码

<httpHandlers>
    <!--对jpg文件添加水印-->
    <add path="*" verb="*.jpg" type="WaterMarker"/>
    <!--对bmp文件添加水印-->
    <add verb="*" path="*.bmp" type="WaterMarker"/>
   </httpHandlers>

 

方法二: 不在图片所在的文件夹下添加webconfig 而是直接在根目录下的webconfig中的配置

不用自动生成的那个<System.web>中配置 而是在<configuration>节点中添加如下代码

 <location path="image">
  <system.web>
   <httpHandlers>
    <!--对jpg文件添加水印-->
    <add path="*" verb="*.jpg" type="WaterMarker"/>
    <!--对bmp文件添加水印-->
    <add verb="*" path="*.bmp" type="WaterMarker"/>
   </httpHandlers> 
  </system.web> 
 </location>

分享到:
评论

相关推荐

    asp.net为PDF添加水印

    如果需要添加图片水印,可以使用`PdfFormXObject`创建图像,并将其添加到`PdfContentByte`上。 此外,需要注意的是,iTextSharp库的最新版本可能已经更新为iText7,其API和使用方式略有不同,但基本思路是一致的。...

    asp.net图片上传添加水印

    在ASP.NET web应用开发中,图片上传和添加水印是一项常见的功能需求,尤其在网站设计、社交媒体、电子商务等领域。此技术允许用户上传个人照片或产品图片,并自动在图片上添加预设的水印,以此保护版权或者展示品牌...

    Asp.net上传图片并添加水印

    在Asp.net开发中,有时我们需要提供用户上传图片的功能,并且为了...这只是一个基础的实现,实际项目中可能需要根据具体需求进行调整,比如添加更复杂的水印样式(如图片水印、角度旋转等),或者优化图片处理性能。

    asp.net c# 动态生成图片 图片水印

    在ASP.NET C#项目中,动态生成图片并添加水印是一项常见的功能需求,尤其是在需要保护版权或标识信息的情况下。本文将深入探讨如何使用C#语言在ASP.NET应用程序中实现这一功能。我们将基于提供的代码片段来展开讨论...

    asp.net图片上传加水印

    在ASP.NET中,处理用户上传的图片并添加水印是一项常见的需求,例如在社交媒体、电商网站或者内容管理系统中。 首先,我们需要了解ASP.NET中文件上传的基本流程。当用户通过表单提交带有文件输入控件的网页时,...

    asp.net 图片添加水印

    首先,我们需要理解ASP.NET中的基本概念,它是一种微软开发的服务器端Web应用程序框架,用于生成动态网页。在处理图片和水印时,通常会用到C#编程语言和System.Drawing命名空间,这个命名空间提供了对图像处理的基本...

    asp.net图片水印效果

    在ASP.NET中,图片水印效果的实现是一个常见的需求,主要应用于版权保护、品牌标识或者时间戳等场景。本文将详细讲解如何利用IHttpHandler接口来实现这一功能。 首先,IHttpHandler接口是ASP.NET中处理HTTP请求的...

    ASP.NET添加水印

    在ASP.NET中添加水印是一项常见的需求,特别是在处理图片时,为了保护版权或者增加品牌标识,我们通常会在图片上添加水印。本文将详细介绍如何在ASP.NET中利用C#语言实现图片的水印功能。 首先,我们要理解水印的...

    通过ASP.NET添加水印

    综上所述,通过ASP.NET添加水印涉及到的知识点包括:ASP.NET框架、HTTPHandler、System.Drawing库、Graphics类、HTML5 Canvas、JavaScript编程、Canvas API、第三方库的使用以及性能优化策略。理解并掌握这些知识点...

    VB.net文字水印和图片水印

    在VB.NET编程环境中,添加文字水印和图片水印是一项常见的任务,这主要涉及到图像处理和图形编程。VB.NET提供了一套丰富的类库,如System.Drawing命名空间,可以帮助开发者实现这些功能。以下是对这个主题的详细说明...

    ASP.NET 图片水印demo 供初学者参考

    在本示例中,我们关注的是ASP.NET中处理图片水印的实践操作,这对于网站设计和开发来说是一项常见的需求。水印可以用来保护版权、添加标识或者为图像提供额外信息。以下将详细阐述如何在ASP.NET中实现图片水印功能。...

    ASP.NET源码——asp.net图片上传加水印evpic增强版.zip

    此压缩包"ASP.NET源码——asp.net图片上传加水印evpic增强版.zip"提供了ASP.NET平台下处理图片上传并添加水印的功能。这个增强版的evpic模块可能包含了一些优化和额外特性,使得图片处理更高效、功能更丰富。 首先...

    asp.net图片水印组件_aspx开发教程.rar

    总之,“asp.net图片水印组件_aspx开发教程”是一个用于在ASP.NET环境中添加图片水印的强大工具。它可以帮助开发者轻松地保护网站上的图片资源,同时提供定制化的水印样式。通过学习和使用这个组件,你可以提升ASP...

    asp .net实现给图片添加图片水印方法示例

    图片上加水印相信每位程序员都会遇到这个需求,下面这篇文章主要给大家介绍了asp .net实现给图片添加图片水印的方法,文中给出了完整的实例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

    【ASP.NET编程知识】asp .net实现给图片添加图片水印方法示例.docx

    在本示例中,我们将探讨如何在ASP.NET中给图片添加图片水印。 首先,创建一个名为`ImageWriter`的类库,该类库包含一个名为`ImageManager`的类,这个类将负责处理图片水印的添加。在这个类中,定义了一个枚举类型`...

    功能很全的asp.net图片水印组件源码

    ASP.NET图片水印组件是一种用于在图片上动态添加文字或图像水印的工具,它能够帮助开发者在网站中实现安全的图片保护和品牌宣传。在ASP.NET框架下,这种组件通常是一个自定义控件或者服务类,可以方便地集成到网站的...

    asp.net图片上传加水印evpic 增强版

    ASP.NET 图片上传加水印技术是Web应用中常见的需求,尤其在网站内容管理、社交媒体或者电子商务平台中,为了保护版权或展示品牌标识,给上传的图片添加水印显得尤为重要。"asp.net图片上传加水印evpic 增强版"是一个...

    asp.net图片上传加水印evpic+增强版 v2.0

    此"asp.net图片上传加水印evpic+增强版 v2.0"是一个专门针对ASP.NET平台的组件,用于实现用户在上传图片时自动添加水印的效果,以保护图片版权或提升品牌形象。 首先,我们需要理解ASP.NET的基本概念。ASP.NET是由...

    ASP.NET 3.0 缩略图水印组件

    ASP.NET 3.0 缩略图水印组件支持动态添加水印,这意味着开发者可以在用户请求图像时实时生成带有水印的图片。水印的位置、透明度、角度、字体样式等属性都可以灵活配置,以满足不同的设计需求。 在实际应用中,这个...

Global site tag (gtag.js) - Google Analytics