mvc实现图片验证码功能
mvc中实现图片验证码很简单,只需要创建一个FileContentResult的方法,返回file就行
//////创建一个文件方法 /// ///publicFileContentResultGetCode(){ //参数一:产生几个字符的验证码图片参数二:验证码的形式(数字、字母、数字字母混合都有) ValidateCodevalidCode=newValidateCode(5,ValidateCode.CodeType.Alphas); //将图片转换为二进制 MemoryStreamms=validCode.CreateCheckCodeImage()asMemoryStream; dateCode=validCode.CheckCode;//通过CheckCode获取当前的验证码 byte[]buffurPic=ms.ToArray(); returnFile(buffurPic,"image/jpeg"); }
以下是生成验证码代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Drawing;
usingSystem.Drawing.Drawing2D;
usingSystem.IO;
namespaceHelper
{
publicclassValidateCode
{
#regionPrivateFields
privateconstdoublePI=3.1415926535897932384626433832795;
privateconstdoublePI2=6.283185307179586476925286766559;
//privatereadonlyint_wordsLen=4;
privateint_len;
privateCodeType_codetype;
privatereadonlySingle_jianju=(float)18.0;
privatereadonlySingle_height=(float)24.0;
privatestring_checkCode;
#endregion
#regionPublicProperty
publicstringCheckCode
{
get
{
return_checkCode;
}
}
#endregion
#regionConstructors
///
///publicconstructors
///
///验证码长度
///验证码类型:字母、数字、字母+数字
publicValidateCode(intlen,CodeTypectype)
{
this._len=len;
this._codetype=ctype;
}
#endregion
#regionPublicField
publicenumCodeType{Words,Numbers,Characters,Alphas}
#endregion
#regionPrivateMethods
publicstringGenerateNumbers()
{
stringstrOut="";
System.Randomrandom=newRandom();
for(inti=0;i<_len;i++)
{
stringnum=Convert.ToString(random.Next(10000)%10);
strOut+=num;
}
returnstrOut.Trim();
}
publicstringGenerateCharacters()
{
stringstrOut="";
System.Randomrandom=newRandom();
for(inti=0;i<_len;i++)
{
stringnum=Convert.ToString((char)(65+random.Next(10000)%26));
strOut+=num;
}
returnstrOut.Trim();
}
//
publicstringGenerateAlphas()
{
stringstrOut="";
stringnum="";
System.Randomrandom=newRandom();
for(inti=0;i<_len;i++)
{
if(random.Next(500)%2==0)
{
num=Convert.ToString(random.Next(10000)%10);
}
else
{
num=Convert.ToString((char)(65+random.Next(10000)%26));
}
strOut+=num;
}
returnstrOut.Trim();
}
privateSystem.Drawing.BitmapTwistImage(BitmapsrcBmp,boolbXDir,doubledMultValue,doubledPhase)
{
System.Drawing.BitmapdestBmp=newBitmap(srcBmp.Width,srcBmp.Height);
//将位图背景填充为白色
System.Drawing.Graphicsgraph=System.Drawing.Graphics.FromImage(destBmp);
graph.FillRectangle(newSolidBrush(System.Drawing.Color.White),0,0,destBmp.Width,destBmp.Height);
graph.Dispose();
doubledBaseAxisLen=bXDir?(double)destBmp.Height:(double)destBmp.Width;
for(inti=0;i=0&&nOldX=0&&nOldY
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。