.NET 程序獲取驗(yàn)證碼方法(一)
2010/10/28 11:42:02
1、在web項(xiàng)目中添加一個(gè)類,如"createimage.cs",然后將我公布的源代碼copy進(jìn)去;
2、再新建一個(gè)web窗體,如"image.aspx",在page_load中加入代碼 "createimage.drawimage ();"當(dāng)然別忘了加上對(duì)類的引用哦!!
3、在頁(yè)面的合適位置上(你想放驗(yàn)證碼的位置)上加上如下javascript代碼就ok 了,
///
/// 驗(yàn)證碼模塊
///
public class createimage
{
public static void drawimage()
{
createimage img=new createimage();
httpcontext.current.session["checkcode"]=img.rndnum(4);
img.createimages(httpcontext.current.session["checkcode"].tostring());
}
///
/// 生成驗(yàn)證圖片
///
/// 驗(yàn)證字符
private void createimages(string checkcode)
{
int iwidth = (int)(checkcode.length * 13);
system.drawing.bitmap image = new system.drawing.bitmap(iwidth, 23);
graphics g = graphics.fromimage(image);
g.clear(color.white);
//定義顏色
color[] c = {color.black,color.red,color.darkblue,color.green,color.orange,color.brown,color.darkcyan,color.purple};
//定義字體
string[] font = {"verdana","microsoft sans serif","comic sans ms","arial","宋體"};
random rand = new random();
//隨機(jī)輸出噪點(diǎn)
for(int i=0;i<50;i++)
{
int x = rand.next(image.width);
int y = rand.next(image.height);
g.drawrectangle(new pen(color.lightgray, 0),x,y,1,1);
}
//輸出不同字體和顏色的驗(yàn)證碼字符
for(int i=0;i
{
int cindex = rand.next(7);
int findex = rand.next(5);
font f = new system.drawing.font(font[findex], 10, system.drawing.fontstyle.bold);
brush b = new system.drawing.solidbrush(c[cindex]);
int ii=4;
if((i+1)%2==0)
{
ii=2;
}
g.drawstring(checkcode.substring(i,1), f, b, 3+(i*12), ii);
}
//畫一個(gè)邊框
g.drawrectangle(new pen(color.black,0),0,0,image.width-1,image.height-1);
//輸出到瀏覽器
system.io.memorystream ms = new system.io.memorystream();
image.save(ms,system.drawing.imaging.imageformat.jpeg);
httpcontext.current.response.clearcontent();
//response.clearcontent();
httpcontext.current.response.contenttype = "image/jpeg";
httpcontext.current.response.binarywrite(ms.toarray());
g.dispose();
image.dispose();
}
///
/// 生成隨機(jī)的字母
///
/// 生成字母的個(gè)數(shù)
/// string
private string rndnum(int vcodenum)
{
string vchar = "0,1,2,3,4,5,6,7,8,9" ;
string[] vcarray = vchar.split(',') ;
string vnum = "" ; //由于字符串很短,就不用stringbuilder了
int temp = -1 ; //記錄上次隨機(jī)數(shù)值,盡量避免生產(chǎn)幾個(gè)一樣的隨機(jī)數(shù)
//采用一個(gè)簡(jiǎn)單的算法以保證生成隨機(jī)數(shù)的不同
random rand =new random();
for ( int i = 1 ; i < vcodenum+1 ; i++ )
{
if ( temp != -1)
{
rand =new random(i*temp*unchecked((int)datetime.now.ticks));
}
int t = rand.next(vcarray.length ) ;
if (temp
下一頁(yè)
返回列表
返回首頁(yè)
主站蜘蛛池模板:
538视频在线观看|
色噜噜狠狠色综合免费视频|
国产精品久久久久国产精品
|
日日噜噜夜夜狠狠va视频|
欧美午夜理伦三级在线观看|
极品肌肉军警h文|
天天狠狠色噜噜|
性欧美videofree另类超大|
国产精品东北一极毛片|
卡一卡二卡三精品|
亚洲人成无码网站久久99热国产|
免费视频专区一国产盗摄|
午夜时刻免费实验区观看|
国产三级日产三级韩国三级|
国产日韩美国成人|
国产看午夜精品理论片|
国产精品亚洲精品日韩电影|
在线播放真实国产乱子伦|
女人与禽交视频免费看|
巨肉超污巨黄h文小短文|
婷婷五月综合缴情在线视频|
奇米色在线视频|
女人让男人直接桶|
奇米精品视频一区二区三区|
天天干天天射天天操|
孩交精品xxxx视频视频|
好吊妞998视频免费观看在线|
小小的日本电影在线观看免费版|
成人福利app|
很黄很刺激很爽的免费视频|
好男人视频网站|
女人张开腿让男人桶免费网站|
国内精品一战二战|
国产综合视频在线观看一区|
国产成人综合日韩精品无|
国产在线a不卡免费视频|
午夜理伦三级播放|
亚洲精品国产电影|
亚洲中字慕日产2020|
久久9精品久久久|
√天堂中文在线最新版8下载|