All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
解决,配置错误,无法识别的配置节“connectionStrings”_[Asp.Net教程]
asp.net新闻标题后加new图片_[Asp.Net教程]
优化SQL Server数据库的方法_[SQL Server教程]
Visual,Studio,2008中的SQL数据库发布_[Asp.Net教程]
C#教程:线程同步
Delphi带历史信息的菜单实例
系统恢复后,通过sqlserver服务管理器启动出现“指定的服务未安装”的解决方法_[SQL,Server教程]
Visual,Studio,2008,简体中文版,测试版2,下载地址_[Asp.Net教程]
PHP技巧:正确理解PHP程序编译时的错误信息_php资料_编程技术
存储过程-轻松过滤SQL Server连接_[SQL Server教程]
Reading number is top 10 pictures
擦地板的大叔太好了
Fender Bender that so horrifying1
The Soviet union swimsuit exposure in the 70 year1
中国女孩大胆自拍,显露完美身材4
The real super beauty15
Entered the goddess in the AD1
Beautiful vacuum girl3
支持判处贩卖儿童者死刑
A beautiful girl to bud3
Hunan province aizhai super-large suspension bridge open to traffic and 4 world first1
Download software ranking
徐若瑄成名作“魔鬼天使”
Tram sex maniac 2 (H) rar bag4
实战黑客不求人
Proficient in Eclipse
Unix video tutorial6
WebService在.NET中的实战应用教学视频 → 第5集
超级战舰
Unix video tutorial20
变速齿轮3.26
美女写真3
delv published in(发表于) 2014/1/24 9:09:14 Edit(编辑)
C#生成中文汉字验证码源码_[Asp.Net教程]

C#生成中文汉字验证码源码_[Asp.Net教程]

C#生成中文汉字验证码源码_[Asp.Net教程]

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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.Text;


public partial class Admin_ValidCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.CreateCheckCodeImage(GenerateCheckCode());


}
private string GenerateCheckCode()
{
int number;
//char code;
string checkCode = String.Empty;


System.Random random = new Random();


Encoding gb = Encoding.GetEncoding("gb2312");
//调用函数产生4个随机中文汉字编码
object[] bytes = CreateRegionCode(6);
//根据汉字编码的字节数组解码出中文汉字
string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));
string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));
string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));
string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));
//输出的控制台
checkCode = str1 + str2 + str3 + str4;


//for (int i = 0; i < 5; i++)
//{
// number = random.Next();


// if (number % 2 == 0)
// code = (char)('0' + (char)(number % 10));
// else
// code = (char)('A' + (char)(number % 26));


// checkCode += code.ToString();
//}


Response.Cookies.Add(new HttpCookie("ValidCode",LjfLib.Encrypt.AES.EncryptAes(checkCode)));
//Session["ValidCode"] = checkCode;



return checkCode;
}


#region 产生波形滤镜效果


private static object[] CreateRegionCode(int strlength)
{
//定义一个字符串数组储存汉字编码的组成元素
string[] rBase = new String[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };


Random rnd = new Random();


//定义一个object数组用来
object[] bytes = new object[strlength];


/*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中
每个汉字有四个区位码组成
区位码第1位和区位码第2位作为字节数组第一个元素
区位码第3位和区位码第4位作为字节数组第二个元素
*/
for (int i = 0; i < strlength; i++)
{
//区位码第1位
int r1 = rnd.Next(11, 14);
string str_r1 = rBase[r1].Trim();


//区位码第2位
rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);//更换随机数发生器的


//种子避免产生重复值
int r2;
if (r1 == 13)
{
r2 = rnd.Next(0, 7);
}
else
{
r2 = rnd.Next(0, 16);
}
string str_r2 = rBase[r2].Trim();


//区位码第3位
rnd = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);
int r3 = rnd.Next(10, 16);
string str_r3 = rBase[r3].Trim();


//区位码第4位
rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);
int r4;
if (r3 == 10)
{
r4 = rnd.Next(1, 16);
}
else if (r3 == 15)
{
r4 = rnd.Next(0, 15);
}
else
{
r4 = rnd.Next(0, 16);
}
string str_r4 = rBase[r4].Trim();


//定义两个字节变量存储产生的随机汉字区位码
byte byte1 = Convert.ToByte(str_r1 + str_r2, 16);
byte byte2 = Convert.ToByte(str_r3 + str_r4, 16);
//将两个字节变量存储在字节数组中
byte[] str_r = new byte[] { byte1, byte2 };


//将产生的一个汉字的字节数组放入object数组中
bytes.SetValue(str_r, i);
}
return bytes;
}


private const double PI = 3.1415926535897932384626433832795;
private const double PI2 = 6.283185307179586476925286766559;
private System.Drawing.Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase)
{
System.Drawing.Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height);


// 将位图背景填充为白色
System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp);
graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height);
graph.Dispose();


double dBaseAxisLen = bXDir ? (double)destBmp.Height : (double)destBmp.Width;


for (int i = 0; i < destBmp.Width; i++)
{
for (int j = 0; j < destBmp.Height; j++)
{
double dx = 0;
dx = bXDir ? (PI2 * (double)j) / dBaseAxisLen : (PI2 * (double)i) / dBaseAxisLen;
dx += dPhase;
double dy = Math.Sin(dx);


// 取得当前点的颜色
int nOldX = 0, nOldY = 0;
nOldX = bXDir ? i + (int)(dy * dMultValue) : i;
nOldY = bXDir ? j : j + (int)(dy * dMultValue);


System.Drawing.Color color = srcBmp.GetPixel(i, j);
if (nOldX >= 0 && nOldX < destBmp.Width
&& nOldY >= 0 && nOldY < destBmp.Height)
{
destBmp.SetPixel(nOldX, nOldY, color);
}
}
}


return destBmp;
}
#endregion


private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null    checkCode.Trim() == String.Empty)
return;


System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 27.0)), 25);
Graphics g = Graphics.FromImage(image);


try
{
//生成随机生成器
Random random = new Random();


//清空图片背景色
g.Clear(Color.White);


//画图片的背景噪音线
for (int i = 0; i < 12; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);


g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}


//Font font = new System.Drawing.Font("Arial", 16, (System.Drawing.FontStyle.Bold   System.Drawing.FontStyle.Italic));
Font font = new System.Drawing.Font("楷体_GB2312", 16, (System.Drawing.FontStyle.Bold));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, 2, 2);


//画图片的前景噪音点
for (int i = 0; i < 100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);


image.SetPixel(x, y, Color.FromArgb(random.Next()));
}


//image = TwistImage(image, true, 3, 1);
//画图片的波形滤镜效果
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);


System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}


}
}







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.