您的位置:首页 > 理论基础 > 计算机网络

数字水印 IHttpHandler 学习总结

2010-10-19 14:16 323 查看
为图片 添加 数字水印
using System;
using System.Data;
using System.Web;
using System.Drawing.Imaging;
using System.Drawing;
using System.IO;
/// <summary>
/// WaterHandler 的摘要说明
/// </summary>
public class WaterHandler:IHttpHandler
{
private const string WATERIMG = "~/Images/watermark.jpg"; //水印图片
private const string DEFAULTIMG = "~/Images/default.jpg"; //默认图片
public bool IsReusable
{
get { return false; }
}
/// <summary>
/// 给访问图片加水印
/// </summary>
/// <param name="context"></param>
public void ProcessRequest(HttpContext context)
{
Image image = Image.FromFile(context.Server.MapPath(DEFAULTIMG));
if (File.Exists(context.Request.PhysicalPath))
{
string path = context.Request.PhysicalPath;
image = Image.FromFile(path); //下载请求图片
//初始化一个画板
Graphics gp = Graphics.FromImage(image);
//得到水印图片
Image waterimg = Image.FromFile(context.Server.MapPath(WATERIMG));
//水印图片的详细信息
int w = image.Size.Width * 2 / 3;
int h = image.Size.Height * 1 / 10;
int x = image.Size.Width - w;
int y = image.Size.Height - h;
//添加水印
gp.DrawImage(
waterimg,
new Rectangle(new Point(x, y), new Size(w, h)),
new Rectangle(new Point(0, 0), waterimg.Size),
GraphicsUnit.Pixel
);
}
context.Response.ContentType = "Image/Jpeg"; //图片输出的设置
image.Save(context.Response.OutputStream, ImageFormat.Jpeg); //将图片保存到响应流
context.Response.End(); //结束响应流
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: