快速业务通道

使用一般处理程序(IHttpHandler)制作图片水印

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
e = Image.FromFile(context.Request.MapPath(defaultimage));//如果不存在图片就输出defaultimage。
44 }
45 context.Response.ContentType = "image/jpeg";//输出图片的类型
46 image.Save(context.Response.OutputStream, ImageFormat.Jpeg);//将图片存入输出流
47 image.Dispose();
48 context.Response.End();
49 }
50
51 public bool IsReusable
52 {
53 get
54 {
55 return false;
56 }
57 }
58 }

这样当Image控件访问Handler的时候就可以输出图片了。

二、全局Handler:

在aspx里面输入 <asp:Image ID="Image1" runat="server" ImageUrl="image/9221944.jpg" />就可以了。不需要请求Handler。然后在项目中单击右键添加新项,选择类。然后输入如下代码:

MyBookMark 的代码

 1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10 using System.IO;
11 using System.Drawing.Imaging;
12 using System.Drawing;
13
14 /// <summary>
15 /// MyBookMark 的摘要说明
16 /// </summary>
17 public class MyBookMark : IHttpHandler
18 {
19 public MyBookMark()
20 {
21 //
22 // TODO: 在此处添加构造函数逻辑
23 //
24 }
25
26 #region IHttpHandler 成员
27
28 public bool IsReusable
29 {
30 get { return false; }
31 }
32
33 private const string waterimage = "~/image/Watermark.jpg"; //水印图片
34 private const string defaultimage = "~/image/default.jpg"; //没有找到图片时显示的图片
35 private const float alpha = 0.5F; //透明度
36
37 public void ProcessRequest(HttpContext context)
38 {
39
40 System.Drawing.Image image;
41
42 if (System.IO.File.Exists(context.Request.PhysicalPath))
43 {
44 image = System.Drawing.Image.FromFile(context.Request.PhysicalPath);
45 System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
46 System.Drawing.Image watermark = System.Drawing.Image.FromFile(context.Request.MapPath(waterimage));
47 float[][] nArray ={ new float[] {1, 0, 0, 0, 0},
48 new float[] {0, 1, 0, 0, 0},
49 new float[] {0, 0, 1, 0, 0},
50 new float[] {0, 0, 0,alpha , 0},
51 new float[] {0, 0, 0, 0, 1}};
52 ColorMatrix colormatrix = new ColorMatrix(nArray);
53 ImageAttributes attributes = new ImageAttributes();
54 attributes.SetColorMatrix(colormatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
55 g.DrawImage(watermark, new Rectangle(image.Width - watermark.Width, image.Height - watermark.Height,
56 watermark.Width, watermark.Height), 0,0, watermark.Width, watermark.Height, GraphicsUnit.Pixel, attributes);//在图片指定坐标处放入一个矩形图片内容为水印图片
57 g.Dispose();
58 watermark.Dispose();
59 }
60 else
61 {
62 ima

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号