Asp.net给图片加水印
来源:互联网 发布:mac输入法切换中文 编辑:程序博客网 时间:2024/04/29 23:38
一般网站水印的实现:
1)上传时就对图片加水印:
a) 每次用户访问时,直接给用户图片就行了.减小服务器端的压力.
b) 缺点:破坏了原有图片.如果网站换logo或改名
2)使用一般处理程序:
a) 每次用户请求都要进行水印的添加,增加了服务器端压力
b) 原图片被保存下来了.
使用一般处理程序的方法
在Web.Config配置文件中设置
<httpHandlers><add verb="*" path="/images/bookcovers/*.jpg" type="命名空间.类名" />
</httpHandlers>
verb表示所有的请求方式(get和post)
path代表请求网站那个目录下的文件要进行过滤
type表示要执行的一般处理程序的类名(命名空间.类名)
=================================================================================
一般处理程序代码参考
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;
using System.IO;
namespace BookShop.Web
{
public class gwatermark : IHttpHandler
{
private const string WATERMARK_URL = "~/Images/watermark.jpg"; //水印图片
private const string DEFAULTIMAGE_URL = "~/Images/default.jpg";
#region IHttpHandler 成员
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
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
}
}
============================================================================================================
要建立一个全局的一般处理程序步骤:
1)建一个类文件,继承自IHttpHandler接口并实现其方法,
2)在ProcessRequest方法中对用户请求的文件进行处理,如何知道用户请求的是哪一个文件呢? context.Request.PhysicalPath;
3)写好上述文件后,修改web.config 在 <httpHandlers>节点中添加下面一句话:
<addverb="*"path="/images/bookcovers/*.jpg" type="BookShop.Web.Common.wmCode" />
Verb表示请求方式 GET/POST 可以用*表示所有方式
Path 请求时,要转到全局一般处理程序的文件名 可以使用通配符
Type 把请求转给哪一个一般处理程序去处理,这里写类名.如果是WebSite,那么就写类名就行了.如果是Web应用程序,就写命名空间.类名
实现上面3步,在测试环境下就可以了.如果要是放在iis上,还是不可以.
在网站上点右键->属性->主目录->配置
添加一个映射:
1)水印
2)防盗链
3)下载rar/txt文件时进行权限验证
- asp.net 中给图片加水印
- Asp.net给图片加水印
- ASP.Net中给图片加水印效果
- asp.net]图片加水印
- asp.net图片加水印
- 用ASP给图片加水印
- ASP.NET图片上传,加水印文字和水印图片!
- ASP.NET图片上传加水印
- ASP.NET 图片加水印防盗链
- ASP.NET 图片加水印防盗链
- ASP.NET 图片加水印防盗链
- ASP.NET 图片加水印防盗链
- 给图片加水印
- 给图片加水印
- 给图片加水印
- 给图片加水印
- 给图片加水印
- 给图片加水印
- java程序员必看书籍
- jQuery中$符号规则(7)
- ubuntu12 androd4.2源码下载
- 6.3
- poj 2342 anniversary party(树形dp入门)
- Asp.net给图片加水印
- DB2—alter追加/删除/重置column操作整理
- 小例子大智慧2--C#中的多态Polymorphism
- jQuery中的常见操作(8)
- iphone开发笔记
- OpenStack建立实例完整过程源码详细分析(12)----依据AMQP通信架构实现消息发送机制解析之一
- grep一个文件时,报错“Binary file ... matches”
- 从jar中读取所有的class
- JavaScript 的性能优化:加载和执行