Net生成手机号码图片
作者:admin 日期:2007-06-17
之前在58.com里面发布分类信息时,看到他的手机号码是用图片形式出现的,虽然这跟验证码的原理应该差不多,但还是觉得有点好奇, 我想是应该用System.Drawing里面的东西可以整出来的吧,于是就整了一下,还是很容易的,发出来给大家共享.[em13]
做得简单,在实际运用中应该需要将所有封装成一个object最好,但是实现了效果,装箱就应该很Easy啦,废话少说
文件:
开发环境:Win2003+Vs.Net2005
前台.Default.aspx的HTML界面,用的是:
一个文本框控件:TextBox : txtCellPhone
一个按钮控件: Button1
两个验证控件: 其中一个是RequiredFieldValidator,用于验证文本框是否输入值,一个是正则表达式验证控件,验证输入的手机号码是否符合要求(小灵通被偶T出克了),值得一提的是:
用于验证手机号码的正则表达式是: [1]{1}[3|5]{1}\d{9}(,[1]{1}[3|5]{1}\d{9})*$
其它的就没有什么啦
再看看实现的核心函数,关键的地方偶都做了详细的注释,大家仔细看一下吧.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;//包含所有用于创建位图和绘制对象的基础类
using System.Drawing.Imaging;//包含所有处理不同图片格式的高级类
using System.Drawing.Text;//包含处理不同字体的类
///
/// Design: Dezai
/// Function:Generate CellPhoneImage
/// PubDate:2007-6-17
///
public class BLL
{
public BLL()
{
}
///
/// 生成手机号的函数
///
/// 手机号码
public void GeneratePic(string MobileNo)
{
Bitmap objBitmap = new Bitmap(140,25);//创建位图
Graphics objGraphics = Graphics.FromImage(objBitmap); //创建Graphic类
objGraphics.Clear(Color.LimeGreen);//设置图片的背景色
Font objFont = new Font("Arail", 14);//设置文字的背景色
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
objGraphics.DrawString(MobileNo, objFont, Brushes.Yellow,2,5);
objBitmap.Save(System.Web.HttpContext.Current.Response.OutputStream, ImageFormat.Jpeg); //图片保存到Response对象的输出流,并在前台输出
}
}
得到的结果如图:
首页:
结果:
这只是一个简单的实现,如果要做到像验证码那样,就可以通过使用System.drawing里面Graphic类中的相关属性来对背景或所产生的图片进行相关的设定,做到越复杂越好,这样才能避免相关的垃圾收集器把你的号码被采集.当然,这是后话,我会找个机会,将这个东东完善:)[em13]
完整源代码下载:(下载了不看请不要下载,不要浪费您的硬盘空间,谢谢^_^) 点击下载此文件
欢迎大家与我一起探讨,请多多指教.
做得简单,在实际运用中应该需要将所有封装成一个object最好,但是实现了效果,装箱就应该很Easy啦,废话少说
文件:
开发环境:Win2003+Vs.Net2005
前台.Default.aspx的HTML界面,用的是:
一个文本框控件:TextBox : txtCellPhone
一个按钮控件: Button1
两个验证控件: 其中一个是RequiredFieldValidator,用于验证文本框是否输入值,一个是正则表达式验证控件,验证输入的手机号码是否符合要求(小灵通被偶T出克了),值得一提的是:
用于验证手机号码的正则表达式是: [1]{1}[3|5]{1}\d{9}(,[1]{1}[3|5]{1}\d{9})*$
其它的就没有什么啦
再看看实现的核心函数,关键的地方偶都做了详细的注释,大家仔细看一下吧.
复制内容到剪贴板 程序代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;//包含所有用于创建位图和绘制对象的基础类
using System.Drawing.Imaging;//包含所有处理不同图片格式的高级类
using System.Drawing.Text;//包含处理不同字体的类
///
/// Design: Dezai
/// Function:Generate CellPhoneImage
/// PubDate:2007-6-17
///
public class BLL
{
public BLL()
{
}
///
/// 生成手机号的函数
///
/// 手机号码
public void GeneratePic(string MobileNo)
{
Bitmap objBitmap = new Bitmap(140,25);//创建位图
Graphics objGraphics = Graphics.FromImage(objBitmap); //创建Graphic类
objGraphics.Clear(Color.LimeGreen);//设置图片的背景色
Font objFont = new Font("Arail", 14);//设置文字的背景色
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
objGraphics.DrawString(MobileNo, objFont, Brushes.Yellow,2,5);
objBitmap.Save(System.Web.HttpContext.Current.Response.OutputStream, ImageFormat.Jpeg); //图片保存到Response对象的输出流,并在前台输出
}
}
得到的结果如图:
首页:
结果:
这只是一个简单的实现,如果要做到像验证码那样,就可以通过使用System.drawing里面Graphic类中的相关属性来对背景或所产生的图片进行相关的设定,做到越复杂越好,这样才能避免相关的垃圾收集器把你的号码被采集.当然,这是后话,我会找个机会,将这个东东完善:)[em13]
完整源代码下载:(下载了不看请不要下载,不要浪费您的硬盘空间,谢谢^_^) 点击下载此文件
欢迎大家与我一起探讨,请多多指教.
评论: 0 | 引用: 0 | 查看次数: 30776
发表评论