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,

代码如下: 
 

 代码如下 复制代码

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
}
}

时间: 2024-07-29 02:08:45

asp.net中无损图片添加水印程序代码的相关文章

asp.net中禁止页面缓存程序代码

方法一:导航时用服务器端的Response.Redirect方法,或者用前端得window.location.replace方法. 方法二:禁用ASP.NET页面缓存. 在必要的时候我还是推荐方法二的.因为我们做开发的不能控制浏览器的设置.用户如果把IE设置为从不检查更新缓存的问题则不好避免,所以还是用方法二,让IE的临时文件夹不存在页面文件. 另外,是否禁用页面缓存要根据实际情况来说,起初我认为页面缓存只是缓存在服务器,后来看了一篇blog 发现缓存的意义还是很大的.在很多情况下可以大大减小服

asp动态生成wbmp图片的程序

程序|动态 asp动态生成wbmp图片的程序 (ASP2001)<%@ Language=VBScript %><% '函数1:'将字符串转换成二进制Function StoB(varstr)str2bin = ""For i = 1 To Len(varstr)varchar = Mid(varstr, i, 1)str2bin = str2bin & ChrB(AscB(varchar))NextStoB = str2binEnd Function '函数

java图片添加水印实例代码分享_java

本文为大家介绍了java图片添加水印实例代码,java实现水印还是非常方便的,水印可以是图片或者文字,具体内容如下 package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io

Android中复制图片的实例代码

activity_main.xml中的配置 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&quo

在ASP.NET中把图片保存到SQL SERVER数据库

asp.net|server|数据|数据库 介绍在很多情况下,我们需要把图片保存到数据库中.在某些应用程序中,存在一些敏感信息不能被存储到文件系统中,因为存储在文件系统上的任何图片都很容易被用户非法获得. 本文将讨论在ASP.NET中怎样把图片保存到SQL SERVER数据库中. 在本文中我们将了解到以下几方面的内容: l???????? 上载图片文件的要求 l???????? 使用Strem对象 l???????? 获得上载图片大小和类型 l???????? 如何使用InputStream方法

如何在ASP.Net 中把图片存入数据库

asp.net|数据|数据库 介绍 可能有很多的时候,我们急需把图片存入到数据库当中.在一些应用程序中,我们可能有一些敏感的资料,由于存储在文件系统(file system)中的东西,将很容易被某些用户盗取,所以这些数据不能存放在文件系统中. 在这篇文章中,我们将讨论怎样把图片存入到Sql2000当中. 在这篇文章中我们可以学到以下几个方面的知识: 1. 插入图片的必要条件 2. 使用流对象 3. 查找准备上传的图片的大小和类型 4.怎么使用InputStream方法? 插入图片的必要条件 在我

在ASP.NET中存取图片到数据库的示例

asp.net|示例|数据|数据库 //开发环境:Window 2000.SQLServer2000..Net Framework SDK正式版 //开发语言:C#.ASP.Net //简介:数据库中图片存蓄及读取 //作者:engine /* 说明:在ASP中,我们用Request.TotalBytes.Request.BinaryRead()来上传图片,这个可恶的BinaryRead()方法非常笨,单个文件上传倒没什么大事,单如果多个图片上专可就花大气力了-!而现在ASP.Net中将会把解决

请高手指点asp.net中如何加入div+css代码,实现菜单效果

问题描述 问题如下:下面的DIV+CSS代码是一个菜单,想用在asp.net中.大类和小类分别从数据库中循环读取出来,显示在指定位置的aspx页面中,相当于动态添加.便于后期维护.有什么好的方法实现吗?<divclass="wrapper"><divclass="nav-bg"><divclass="nav-list"><ulid="nav"class="nav"&

ASP.net中网站访问量统计方法代码_实用技巧

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