源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-08-21 08:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:理解HttpHandler,并为所有*.jpg图片生成一段文字于图片上
接口IHttpHandler的定义如下:
[u]复制代码[/u] 代码如下:
interface IHttpHandler { void ProcessRequest(HttpContext ctx); bool IsReuseable { get; }
1新建一网站,名为MyHttpHandlerTest 2右击添加,选择类库,取名为MyHttpHandler 3-在上一步新建的类库上右键添加System.Web引用 主要代码:
[u]复制代码[/u] 代码如下:
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"/> <!-- 配置文件中的选项说明: · verb可以是"GET"或"POST",表示对GET或POST的请求进行处理。"*"表示对所有请求进行处理。 · Path指明对相应的文件进行处理,"*.aspx"表示对发给所有ASPX页面的请求进行处理。可以指明路径,如"/test/*.aspx",表明只对test目录下的ASPX文件进行处理。 · Type属性中,逗号前的字符串指明HttpHandler的实现类的类名,后面的字符串指明Dll文件的名称。 格式如:type="自定义HttpHandler的实现类的全名,自定义HttpHandler的实现类的命名空间(即Dll名)" 或 type="自定义HttpHandler的实现类的全名" --> </httpHandlers> 6-在MyHttpHandlerTest右键添加引用,选择项目找到刚才编译后的.dll文件 7-运行Handler1.aspx,页面显示: [img]http://pic002.cnblogs.com/images/2012/173583/2012022618053536.png[/img] 下面我们利用HttpHandler将一段文字生成于图片中 添加一个类,默认为Class.cs
[u]复制代码[/u] 代码如下:
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文件中添加一段代码传值
[u]复制代码[/u] 代码如下:
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控件开发》
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部