C#图片验证码绘制
制作验证码.也可以画弧线之类.....
//新建一个网站,在后台代码中引用一个using Stystem.Drawing的命名空间 Bitmap img = new Bitmap(, ); //制作一个宽100,高50的画板
Graphics g = Graphics.FromImage(img); //画出背景图
List<Color> clist = new List<Color>();//制作一个新的颜色集合
clist.Add(Color.Red);//制作一个个的颜色内容
clist.Add(Color.Yellow);
clist.Add(Color.Blue);
clist.Add(Color.Green);
clist.Add(Color.Aqua);
clist.Add(Color.Orange);
clist.Add(Color.Pink);
//验证码内容
Random r = new Random();// 创作一个随机数
string ss = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; //写下所有关于验证码的数字跟字母
string s = ""; //写一个空的字符串
//防止字颜色与背景颜色重复
Color bkcolor = clist[r.Next(, clist.Count)];//挑选一个随机的颜色
clist.Remove(bkcolor);//删除掉这个颜色
g.FillRectangle(new SolidBrush(bkcolor), , , , ); //设置背景颜色
for (int i = ; i < ; i++)
{
s += ss[r.Next(, ss.Length)]; //用for循环从ss中挑选4个验证码随机数
}
Font f = new Font("微软雅黑", ); //设置字体大小
Brush b = new SolidBrush(clist[r.Next(, clist.Count)]); //用上面写的随机颜色定义一个字体颜色
g.DrawString(s, f, b, , ); //画出验证码
Session["YZM"] = s; //设置一个全局验证码.用来验证是否正确
for (var i = ; i < ; i++)
{
Pen pp = new Pen(new SolidBrush(clist[r.Next(, clist.Count)]), r.Next(, )); //设置一个随机颜色的画笔
Point p1 = new Point(r.Next(, ), r.Next(, )); //设置干扰线条的长短
Point p2 = new Point(r.Next(, ), r.Next(, )); //设置第二个干扰线条的长短
g.DrawLine(pp, p1, p2); //画线
}
img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); //画出这一张验证码
忘了写怎么用了
在新建一个网站
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>//用来验证图片里面的验证码
<img id="imgyzm" src="YZM.aspx" />//这个就是刚刚制作好的验证码
<asp:Button ID="Button1" runat="server" Text="验证" /> // 只是一个验证按钮
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>//用来显示是否正确
在这个新建网站后台只需要写一个Button1的点击事件即可
if (TextBox1.Text.ToUpper() == Session["YZM"].ToString().ToUpper())
Label1.Text = "OK";
else
Label1.Text = "错误!!!!!!";
C#图片验证码绘制的更多相关文章
- android图片验证码--自绘控件
自绘控件的内容都是自己绘制出来的 大致流程如下: 1.定义一个类继承view 使用TypedArray初始化属性集合 在view的构造方法中 有一个AttributeSet的参数 很明显是用来保存控件 ...
- Android-简单的图片验证码
Android-图片验证码生成1.为啥要验证码?图片验证码在网络中使用的是比较普遍的.一般都是用来防止恶意破解密码.刷票.论坛灌水.刷页等.2.怎样的验证码比较好?验证码的获取方式无非就两种,一种是后 ...
- 在mvc中实现图片验证码的刷新
首先,在项目模型(Model)层中建立一个生成图片验证码的类ValidationCodeHelper,代码如下: public class ValidationCodeHelper { //用户存取验 ...
- PHP编写的图片验证码类文件分享方法
适用于自定义的验证码类! <?php/* * To change this license header, choose License Headers in Project Propertie ...
- 纯JS实现图片验证码功能并兼容IE6-8
最近要搞一个图片验证码功能,但是又不想自己写后台代码.于是自己准备搞一个纯前端的验证码功能,于是网上搜索了一下,找到一个插件gVerify.js,简单好用,实现完美.不过后面接到说要兼容IE8,想想也 ...
- 基于spring mvc的图片验证码实现
本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...
- 图片验证码(Struts2中使用)
写在前面: 最近在项目中做了一个登录页面,用到了图片验证码的功能,所以记录一下.方便之后再有用到,直接拿来用即可.其实图片验证码的生成都是有固定步骤的,网上也有很多的例子,有的时候,如果不想深究,都是 ...
- asp.net core 图片验证码,后台验证
验证方法: public static string VerificationCodeCacheFormat="vcode_cache_{0}"; public IActionRe ...
- RESTful API格式 图片验证码接口
之前公司写图片验证码时用的是session 后来写接口时也想用session存验证码 不过领导说RESTful API 写接口 没有session这一说 于是就用了redis 存验证码 还有就是接口 ...
随机推荐
- “全栈2019”Java第一百一十三章:什么是回调?回调应用场景详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- php-fpm 和 nginx 的两种通信方式
在 linux 中,nginx 服务器和 php-fpm 可以通过 tcp socket 和 unix socket 两种方式实现. 一下内容转自:https://blog.csdn.net/qq62 ...
- robot framework-断言
*** Test Cases *** 断言一 #01.should contain . should not contain 与should contain x times @{list1}= cre ...
- 替代iframe新逻辑
使用ajax请求.下面是代码逻辑 $.ajax({ url:url, type:'get', dataType: "text", success:function(msg){ $( ...
- Create Index using NEST .NET
Hello Guys, I have a doubt about how create index using NEST .NET. I created every fields in my C# m ...
- verify验证插件的详解
使用此验证插件,我们只需要新建一个实例对象,同时传入一个json对象就行了,这里我们只传入了两个属性:checkItem和callback.下面的代码解析,我们就按照这个例子来. var verify ...
- LLDB 和Chisel 使用例子
打印变量 打印数字 (lldb) p/d 16 16 16 进制格式 (lldb) p/x 16 0x10 2 进制格式 (lldb) p/t 16 0b00000000000000000000000 ...
- word前页与后页页码断开
方法一:以Word2013为例:1. 光标移动到目录页的最后一行,从“页面布局”选项卡“分隔符”中选择“下一页”类型的“分节符”,删除多余的行.分页符等(图1): 2. 双击正文任意一页的页眉/页脚区 ...
- Java NIO学习与记录(三): Scatter&Gather介绍及使用
Scatter&Gather介绍及使用 上一篇知道了Buffer的工作机制,以及FileChannel的简单用法,这一篇介绍下 Scatter&Gather 1.Scatter(分散 ...
- python的copy模块
python的copy模块 概念 Python中的赋值语句不复制对象,它们在目标和对象之间建立索引,这就是浅复制.对于一些对象或者集合,我们有时需要一个副本,以便可以更改一个副本中的值而不改变其原对象 ...