ASP.NET中画图形验证码的实现代码
本文原创自http://www.niuzhan.com/Bago/
本文给大家分享一段asp.net代码实现画图形验证码功能,代码简单易懂,具体代码如下所示:
01
context.Response.ContentType = “image/jpeg”;
02
//生成随机的中文验证码
03
string yzm = “人口手大小多少上中下男女天地会反清复明杨中科小宝双儿命名空间语现在明天来多个的我山东河北南固安北京南昌东海西安是沙河高教园学”
04
+ “木禾上下土个八入大天人火文六七儿九无口日中了子门月不开四五目耳头米见白田电也长山出飞马鸟云公车牛羊小少巾牙尺毛又心手水广升足”
05
+ “走方半巴业本平书自已东西回片皮生里果几用鱼今正雨两瓜衣来年左右万百丁齐冬说友话春朋高你绿们花红草爷亲节的岁行古处声知多忙洗真认父扫”
06
+ “母爸写全完关家看笑着兴画会妈合奶放午收女气太早去亮和李语秀千香听远唱定连向以更后意主总先起干明赶净同专工才级队蚂蚁前房空网诗黄林闭”
07
+ “童立是我朵叶美机她过他时送让吗往吧得虫很河借姐呢呀哪谁凉怕量跟最园脸因阳为光可法石找办许别那到都吓叫再做象点像照沙海桥军竹苗井面乡”
08
+ “忘想念王这从进边道贝男原爱虾跑吹乐地老快师短淡对热冷情拉活把种给吃练学习非苦常问伴间共伙汽分要没孩位选北湖南秋江只帮星请雪就球跳玩”
09
+ “桃树刚兰座各带坐急名发成动晚新有么在变什条”;
10
Random r = new Random();
11
string validCode = “”;
12
for (int i = 0; i < 4; i++)
13
{
14
int number = r.Next(0, yzm.Length);
15
validCode += yzm[number];
16
}
17
//画图
18
using(Bitmap b = new Bitmap(150, 30))
19
{
20
using (Graphics g = Graphics.FromImage(b))
21
using(Font f = new Font(“宋体”, 20))
22
{
23
g.Clear(Color.Yellow);//清除整个绘画面并填充指定背景色
24
g.DrawString(validCode, f, Brushes.Red, new PointF(0, 0));//开始绘制
25
//前景点
26
for (int i = 0; i < 100; i++)
27
{
28
int x = r.Next(0, 150);
29
int y = r.Next(0, 30);
30
b.SetPixel(x, y, Color.Red);
31
}
32
//后景线
33
for (int i = 0; i < 100; i++)
34
{
35
int x = r.Next(0, 150);
36
int y = r.Next(0, 30);
37
g.DrawLine(Pens.Red, x, y, x + 1, y + 1);
38
}
39
}
40
b.Save(context.Response.OutputStream, ImageFormat.Jpeg);//保存到输出流中
41
}
以上所述是牛站新闻news.mkq.online 给大家介绍的ASP.NET中画图形验证码的实现代码,希望对大家有所帮助。
- mysql DUPLICATE KEY UPDATE 问题
- mysql复制学习二 安装及首次复制配置
- 关于操作权限
- hadoop loadBalance源码分析
- writeup | 应该不是 XSS
- Hbase 源码分析之 Get 流程及rpc原理
- MOCTF WEB 题解
- HBase行锁与MVCC分析
- HBase行锁探索
- Spring Cloud构建微服务架构:分布式服务跟踪(抽样收集)【Dalston版】
- HBase client访问ZooKeeper获取root-region-server DeadLock问题(zookeeper.ClientCnxn Unable to get data of zn
- zookeeper学习系列:四、Paxos算法和zookeeper的关系
- 有了phonegap你还android吗?
- zookeeper学习系列:三、利用zookeeper做选举和锁
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 干货 | 滴滴 数据分析原来是这样做的!
- 数据链路层之PPP协议
- matplotlib基础绘图命令之boxplot
- MapReduce之GroupingComparator分组(辅助排序、二次排序)
- MySQL优化--概述以及索引优化分析
- MySQL优化--查询分析工具以及各种锁
- MySQL优化--MVCC
- Linux入门--基础命令
- Linux入门--权限管理、任务调度、磁盘管理
- 【Rust日报】2020-08-05 -- 如何在2020年进一步加快 Rust 编译器的速度
- Linux学习--网络、进程、服务、软件管理
- IOS label 设置行高
- 重学数据结构(序:概览)
- 【Rust日报】2020-08-06 使用 Rust 编写的 Lambdas 在 AWS IoT 和 SQS 队列之间传递消息
- react-router-config的使用