asp.net中水印的具体实现代码

水印是为了防止别盗用我们的图片.

两种方式实现水印效果

1)可以在用户上传时添加水印.

a)   好处:与2种方法相比,用户每次读取此图片时,服务器直接发送给客户就行了.

b)   缺点:破坏了原始图片.

2)通过全局的一般处理程序,当用户请求这张图片时,加水印.

a)   好处:原始图片没有被破坏

b)   缺点:用户每次请求时都需要对请求的图片进行加水印处理,浪费的服务器的资源.

代码实现第二种方式:


代码如下:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Drawing;  
using System.IO;

namespace BookShop.Web  
{  
    public class WaterMark : IHttpHandler  
    {

private const string WATERMARK_URL = "~/Images/watermark.jpg";        //水印图片  
        private const string DEFAULTIMAGE_URL = "~/Images/default.jpg";<span style="white-space:pre">   </span>      //默认图片  
        #region IHttpHandler 成员

public bool IsReusable  
        {  
            get { return false; }  
        }

public void ProcessRequest(HttpContext context)  
        {

//context.Request.PhysicalPath  //获得用户请求的文件物理路径

System.Drawing.Image Cover;  
            //判断请求的物理路径中,是否存在文件  
            if (File.Exists(context.Request.PhysicalPath))  
            {  
                //加载文件  
                Cover = Image.FromFile(context.Request.PhysicalPath);  
                //加载水印图片  
                Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));  
            //通过书的封面得到绘图对像  
                Graphics g = Graphics.FromImage(Cover);  
                //在image上绘制水印  
                g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height,   
[csharp] view plaincopy
watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);  
                //释放画布  
                g.Dispose();  
                //释放水印图片  
                watermark.Dispose();  
            }  
            else 
            {  
                //加载默认图片  
                Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));  
            }  
            //设置输出格式  
            context.Response.ContentType = "image/jpeg";  
            //将图片存入输出流  
            Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);  
            Cover.Dispose();  
            context.Response.End();  
        }

#endregion  
    }  
}

(0)

相关推荐

  • asp.net如何在图片上加水印文字具体实现

    第一步,添加一个一般处理程序(Handler),本例是ImageHandler 复制代码 代码如下: using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;usin

  • asp.net上传图片并作处理水印与缩略图的实例代码

    方法类: 复制代码 代码如下: upFileClass.cs 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.HtmlC

  • asp.net中上传图片文件实现防伪图片水印并写入数据库

    复制代码 代码如下: // 涉及命名空间 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Web; using Syst

  • 用ASP.NET实现简单的文字水印

    代码如下: <%@ Import Namespace="System" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Drawing" %> <%@ Page language="vb" %> <script runat="server">    Dim Fi

  • asp.net 添加水印的代码(已测试)

    加水印的功能代码如下所示 复制代码 代码如下: /// <summary> /// 图片修改类,主要是用来保护图片版权的,版权归原作者所有 /// </summary> public class picmark { #region "member fields" private string modifyImagePath = null; private string drawedImagePath = null; private int rightSpace;

  • asp.net中如何实现水印

    水印是为了防止别盗用我们的图片. 两种方式实现水印效果 1)可以在用户上传时添加水印. a) 好处:与2种方法相比,用户每次读取此图片时,服务器直接发送给客户就行了. b) 缺点:破坏了原始图片. 2)通过全局的一般处理程序,当用户请求这张图片时,加水印. a) 好处:原始图片没有被破坏 b) 缺点:用户每次请求时都需要对请求的图片进行加水印处理,浪费的服务器的资源. 代码实现第二种方式: 复制代码 代码如下: using System; using System.Collections.Gen

  • ASP.NET 图片加水印防盗链实现代码

    首先建一个类: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Drawing; /// <summary> ///Class1 的摘要说明 /// </summary> public class Class1:IHttpHandler //调用接口 { public Class1() { // //TODO: 在

  • asp.net中水印的具体实现代码

    水印是为了防止别盗用我们的图片. 两种方式实现水印效果 1)可以在用户上传时添加水印. a)   好处:与2种方法相比,用户每次读取此图片时,服务器直接发送给客户就行了. b)   缺点:破坏了原始图片. 2)通过全局的一般处理程序,当用户请求这张图片时,加水印. a)   好处:原始图片没有被破坏 b)   缺点:用户每次请求时都需要对请求的图片进行加水印处理,浪费的服务器的资源. 代码实现第二种方式: 复制代码 代码如下: using System;   using System.Colle

  • ASP.net中网站访问量统计方法代码

    一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间(IP_DateTime),些表的信息本人只保存一天的信息,如果要统计每个月的信息则要保存一个月.因为我不太懂对数据日志的操作,所以创建此表,所以说我笨吧,哈哈. 二.在Global.asax中获取用户信息 在Global.asax的Session_Start即新会话启用时获取有关的信息,同时在这里实现在线人数.访问总人数的增量统计,代

  • 详解ASP.NET中Identity的身份验证代码

    本篇内容主要讲述了实现基于微软账户的第三方身份验证.实现双因子身份验证. 验证码机制这3个内容. 实现基于微软账户的第三方身份验证 在微软提供的ASP.NET MVC模板代码中,默认添加了微软.Google.twitter以及Facebook的账户登录代码(虽然被注释了),另外针对国内的一些社交账户提供了相应的组件,所有组件都可以通过Nuget包管理器安装: 从上图中看到有优酷.微信.QQ.微博等组件,其中一些是微软提供的,一些是其它开发者提供的.而本文将使用微软账户为例来介绍如何实现一个第三方

  • ASP.NET中的URL过滤实现代码

    下面是类的定义. 复制代码 代码如下: using System; using System.Web; using System.Web.SessionState; namespace QTJZ {     public class Filters : IHttpModule, IRequiresSessionState     {         public void Dispose() { } public void Init(HttpApplication application)   

  • 在ASP.NET中下载文件的实现代码

    这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令: Response.Redirect("test.doc") 您可以把上面这行指令放在Button的Click事件当中,当用户点击按钮之后,网页就会被转址到该word档,造成下载的效果. 但是这样的下载有几个问题: 1. 无法下载不存在的文件:例如,我们若是想把程序动态(临时)产生的文字,当作一个文件下载

  • asp.net中简体转繁体实现代码

    我还是直接贴例子在说明一下吧: 复制代码 代码如下: //Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using EncodeMy; namespace TestEnCode { public p

  • Asp.net中使用PageDataSource分页实现代码

    复制代码 代码如下: 注:封装数据绑定控件(如 System.Web.UI.WebControls.DataGrid.System.Web.UI.WebControls.GridView.System.Web.UI.WebControls.DetailsView    //     和 System.Web.UI.WebControls.FormView)的与分页相关的属性,以允许该控件执行分页操作.无法继承此类.DataListpublic DataTable GetDataSet(strin

  • asp.net中JavaScript数据验证实现代码

    今天在做一个数据修改的页面,页面上有一个DropDownList控件,绑定的是实体中的重要属性,我希望用户在修改该控件值的时候,提示用户,他修改了该控件的值.所以为该下拉控件加上了如下语句. 复制代码 代码如下: DDLmaterial.Attributes.Add("onchange", "alert('注意:您修改了物品类型!')"); 似乎不错,不仅有提示效果,也不需要刷新页面.可是当我打开页面进行测试的时候就发现了问题,当我把下拉控件的值改回原值的时候,它还

  • asp编程中常用的javascript辅助代码第1/2页

    一些常用的辅助代码 点击返回上页代码: <form> <p><input TYPE="button" VALUE="返回上一步" ONCLICK="history.back(-1)"></p> </form> 弹出警告框代码: <form> <p><input TYPE="button" VALUE="弹出警告框" O

  • asp.net中文件下载功能的实例代码

    复制代码 代码如下: //TransmitFile实现下载protected void Button1_Click(object sender, EventArgs e){ Response.ContentType = "application/x-zip-compressed";Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");string filena

随机推荐