博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
验证码
阅读量:6556 次
发布时间:2019-06-24

本文共 2312 字,大约阅读时间需要 7 分钟。

方法一:点击图片实现更换验证码

<img src="验证码界面路径" alt="看不清楚,换一张" id="img" οnclick="img.src=验证码界面路径?'+new Date().getTime()";" />

方法二:点超链接更换验证码、下面这个例子两个方法都用到了、点击图片也可以

<script language="javascript">  

function change()  
{  
var img =document.getElementById("codeimg");  
img.src=img.src+"?";  
}  
</script>  
<a href="javascript:change();">看不清,换一张 </a>  
<img alt="" src="" style="cursor:pointer;" id="codeimg" οnclick="this.src='validate.aspx?time=' + Math.random();" /> <script language="javascript" type="text/javascript">document.getElementById('codeimg').src = 'validate.aspx?time=' + Math.random(); </script>  

三、

protected void Page_Load(object sender, EventArgs e)

{
string validateCode = CreateValidateCode();//生成验证码
Bitmap bitmap = new Bitmap(imgWidth, imgHeight);//生成Bitmap图像
DisturbBitmap(bitmap); //图像背景
DrewValidateCode(bitmap, validateCode);//绘制验证码图像
bitmap.Save(Response.OutputStream, ImageFormat.Gif);//保存图像,等待输出
}
private int codeLen = 4;//验证码长度
private int fineness = 85;//图片清晰度
private int imgWidth = 48;//图片宽度
private int imgHeight = 24;//图片高度
private string fontFamily = "Times New Roman";//字体名称
private int fontSize = 10;//字体大小
private int fontStyle = 0;//字体样式
private int posX = 0;//绘制起始坐标X
private int posY = 0;//绘制坐标Y
private string CreateValidateCode() //生成验证码
{
string[] source = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P,", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
string validateCode = "";
Random random = new Random();// 随机数对象
for (int i = 0; i < codeLen; i++)//循环生成每位数值
{
string n =source[random.Next(0,source.Length)] ;//数字
validateCode += n.ToString();
}
Session["vcode"] = validateCode;//保存验证码
return validateCode;// 返回验证码
}
private void DisturbBitmap(Bitmap bitmap)//图像背景
{
Random random = new Random();//通过随机数生成
for (int i = 0; i < bitmap.Width; i++)//通过循环嵌套,逐个像素点生成
{
for (int j = 0; j < bitmap.Height; j++)
{
if (random.Next(90) <= this.fineness)
bitmap.SetPixel(i, j, Color.LightGray);
}
}
}
private void DrewValidateCode(Bitmap bitmap, string validateCode)//绘制验证码图像
{
Graphics g = Graphics.FromImage(bitmap);//获取绘制器对象
Font font = new Font(fontFamily, fontSize, FontStyle.Bold);//设置绘制字体
g.DrawString(validateCode, font, Brushes.Black, posX, posY);//绘制验证码图像
}

 

转载于:https://www.cnblogs.com/nzgbk/p/5770166.html

你可能感兴趣的文章
32个c语言关键字发音,C语言的32个关键字(读音、用法、注释)转来的,给刚接触C的...
查看>>
为煮酒新书《构建高可用Linux服务器》作序!
查看>>
Windows Azure中文博客 Windows Azure入门教学系列 (一): 创建第一个WebRole程序
查看>>
Linux学习之CentOS(四)----Linux各目录的介绍
查看>>
MySQL 跳过同步错误方法
查看>>
MySQL 清理slowlog方法
查看>>
HTTP深入浅出 http请求
查看>>
为YUM设置代理的方法
查看>>
Java 编程的动态性 第1 部分: 类和类装入--转载
查看>>
再谈ABC
查看>>
【转】持久化消息队列之MEMCACHEQ
查看>>
java-Mail
查看>>
Dom4j学习笔记
查看>>
C语言 HTTP上传文件-利用libcurl库上传文件
查看>>
[MEAN Stack] First API -- 7. Using Route Files to Structure Server Side API
查看>>
调试逆向分为动态分析技术和静态分析技术(转)
查看>>
Android webview使用详解
查看>>
业务对象和BAPI
查看>>
程序源系统与当前系统不一致:Carry out repairs in non-original systems only if urgent
查看>>
微软职位内部推荐-Senior Software Engineer
查看>>