手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >理解HttpHandler,并为所有*.jpg图片生成一段文字于图片上
理解HttpHandler,并为所有*.jpg图片生成一段文字于图片上
摘要:接口IHttpHandler的定义如下:复制代码代码如下:interfaceIHttpHandler{voidProcessRequest(...

接口IHttpHandler的定义如下:

复制代码 代码如下:

interface IHttpHandler

{

void ProcessRequest(HttpContext ctx);

bool IsReuseable { get; }

1新建一网站,名为MyHttpHandlerTest

2右击添加,选择类库,取名为MyHttpHandler

3-在上一步新建的类库上右键添加System.Web引用

主要代码:

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.Web;

using System.Web.SessionState;

namespace MyHttpHandler

{

public class Class1:IHttpHandler,IRequiresSessionState

{

#region IHttpHandler成员

public bool IsReusable

{

get { return true; }

}

public void ProcessRequest(HttpContext context)

{

context.Response.Write("handler处理");

}

#endregion

}

}

4-在MyHttpHandler类库上右键,生成,取名为MyHttpHandler

5-在web.config中的system.web节点中天下如下节点

<httpHandlers>

<add verb="*" path="Handler1.aspx" type="MyHttpHandler.Class1,MyHttpHandler"/>

<>

</httpHandlers>

6-在MyHttpHandlerTest右键添加引用,选择项目找到刚才编译后的.dll文件

7-运行Handler1.aspx,页面显示:

理解HttpHandler,并为所有*.jpg图片生成一段文字于图片上1

下面我们利用HttpHandler将一段文字生成于图片中

添加一个类,默认为Class.cs

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.Web;

using System.Web.SessionState;

using System.Drawing;

/// <summary>

/// Class1 的摘要说明

/// </summary>

public class Class1:IHttpHandler

{

public Class1()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

public bool IsReusable

{

get { return true; }

}

private static Image OldImage = null;

private static Image GetOldImage(HttpContext context)

{

if (OldImage == null)

{

OldImage = Image.FromFile(context.Server.MapPath("~/Images/Old.jpg"));

}

return OldImage.Clone() as Image;

}

public void ProcessRequest(HttpContext context)

{

Image newimage = GetOldImage(context);

Graphics gh = Graphics.FromImage(newimage);

Font font = new Font("Monaco", 24.0f, FontStyle.Regular);

string writetext = HttpUtility.UrlEncode(context.Request.QueryString["writetext"]);

gh.DrawString(HttpUtility.UrlDecode(writetext), font, new SolidBrush(Color.LightBlue), 20.0f, newimage.Height - font.Height - 30);

newimage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

gh.Dispose();

newimage.Dispose();

}

}

新建一个.aspx页面,添加一个HyperLink控件,再在其.cs文件中添加一段代码传值

复制代码 代码如下:

protected void Page_Load(object sender, EventArgs e)

{

HyperLink1.NavigateUrl = "img.jpg?writetext=" + HttpUtility.UrlEncode("大蜗牛");

}

另外还需在web.config文件中将httpHandlers节点中改为如下

<add verb="*" path="*.jpg" type="Class1"/>

表明对所有的.jpg格式的文件才会处理

参考《道不远人 深入解析asp.net 2.0控件开发》

【理解HttpHandler,并为所有*.jpg图片生成一段文字于图片上】相关文章:

ASP.Net 上传图片并生成高清晰缩略图

ASP.Net生成一个简单的图片

引用全局程序集缓存内的程序集的方法

使用UserControl做网站导航条的思路 分析

asp.net 备份和恢复数据库的方法

找不到类型或命名空间名称“Server”(是否缺少 using 指令或程序集引用?)

ASP.net中实现基于UrlRewrite的防盗链功能

上传图片前判断文件格式与大小验证文件是不是图片

asp.net为网页动态添加description描述信息的方法

获取字符串数组的最后一段字符

精品推荐
分类导航