Web服务实现验证码
来源:互联网 发布:js下拉列表 编辑:程序博客网 时间:2024/04/28 17:02
Service1.asmx
using System.Drawing;
[WebMethod]
public byte[] GenerateImage(int nLen,ref string strKey){
int nBmpWidth=13*nLen+5;
int nBmpHeight=25;
System.Drawing.Bitmap bmp=new System.Drawing.Bitmap (nBmpWidth,nBmpHeight);
//1.生成随机图像背景颜色
int nRed,nGreen,nBlue;
System.Random rd=new Random((int)System.DateTime.Now.Ticks);
nRed=rd.Next(255)%128+128;
nGreen=rd.Next(255)%128+128;
nBlue=rd.Next(255)%128+128;
//2.填充位图背景
System.Drawing.Graphics graph=System.Drawing.Graphics.FromImage(bmp);
graph.FillRectangle(new SolidBrush(System.Drawing.Color.FromArgb(nRed,nGreen,nBlue))
,0
,0
,nBmpWidth
,nBmpHeight);
//3.图片的背景噪音线
int nLines=10;
System.Drawing.Pen pen=new System.Drawing.Pen(System.Drawing.Color.FromArgb(nRed-17,nGreen-17,nBlue-17),2);
for(int a=0;a<nLines;a++){
int x1=rd.Next()%nBmpWidth;
int y1=rd.Next()%nBmpHeight;
int x2=rd.Next()%nBmpWidth;
int y2=rd.Next()%nBmpHeight;
graph.DrawLine(pen,x1,y1,x2,y2);
}
//采用的字符集,可以随意拓展
string strCode="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
//4.循环获得字符,并绘制
string strResult="";
for(int i=0;i<nLen;i++){
int x=(i*13+rd.Next(3));
int y=rd.Next(4)+1;
//确定字体
System.Drawing.Font font=new System.Drawing.Font ("arial",12+rd.Next()%4,System.Drawing.FontStyle.Bold);
char c=strCode[rd.Next(strCode.Length)];//随机获取字符
strResult +=c.ToString();
//绘制字符
graph.DrawString(c.ToString(),font,new SolidBrush(System.Drawing.Color.FromArgb(nRed-60,nGreen-60+y*3,nBlue-40+y*3)),x,y);
}
//图画片的前景噪音点
for(int i=0;i<10;i++){
int x=rd.Next(bmp.Width);
int y=rd.Next(bmp.Height);
bmp.SetPixel(x,y,Color.FromArgb(rd.Next()));
}
//图画片的边框线
graph.DrawRectangle(new Pen(Color.Silver),0,0,bmp.Width-1,bmp.Height-1);
//输出
System.IO.MemoryStream bstream=new System.IO.MemoryStream ();
bmp.Save(bstream,System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose();
graph.Dispose();
strKey=strResult;
byte[] byteReturn=bstream.ToArray();
bstream.Close();
return byteReturn;
}
gif.aspx
private void Page_Load(object sender, System.EventArgs e)
{
GenerateImage.Service1 imgsvr=new WebImage.GenerateImage.Service1();
string strKey = "";
byte[] data = imgsvr.GenerateImage(6,ref strKey);
Session["regcode"] = strKey;
Response.OutputStream.Write(data,0,data.Length);
}
Main.aspx
private void btLogin_Click(object sender, System.EventArgs e)
{
if(this.tbCode.Text!=Session["regcode"].ToString())
Response.Write("注册码错误!");
}
- Web服务实现验证码
- web验证码实现
- web实现验证码
- 身份证号码验证web服务
- web验证码的实现
- Web验证码实现机制
- web中验证码实现
- java web验证码实现
- java web 实现验证码
- Email 电子邮件地址验证 WEB 服务
- 开发基于Web Service的图片验证码服务
- 开发基于Web Service的图片验证码服务
- LINUX 部署 WEB.PY 验证码服务的 配置说明书
- Linux下web服务验证码不显示的问题
- java web中验证码的实现
- Java Web中验证码的实现
- 利用Web Service实现验证码技术
- Java WEB项目如何实现验证码
- 技术强调深度,管理强调宽度
- 测试
- DB2 V9 常用SQL整理 - Part 1
- 项目经验-刑海捷
- VIEWGRID控制,系列收集!
- Web服务实现验证码
- 创新谈-邢海捷
- 害怕!
- PB10开发的Oracle10g数据库应用系统所需的dll
- 项目经验-张宪伟
- 计算机专业的学生没事就业去用的简历
- Net中自动升级组件的配置手册
- 创新谈-张宪伟
- 今天在QQ上和以前的一个长辈的QQ号聊起了天,可聊了半天他发了一让人哭笑不得的话.......