C#创建简单的验证码
首先,创建一个CLASS类,然后需要add Reference的方式添加 System.Drawing(画画的类)
方法代码如下:
2 /// 定义显示的随机字符
3 /// </summary>
4 /// <param name="strList"></param>
5 /// <returns></returns>
6 private string imageStr(char[] strList)
7 {
8
9 if (strList == null)
10 strList = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
11
12 int codeLengh = 4;
13 string radomCode = "";
14 Random r = new Random();
15 for (int i = 0; i < codeLengh;i++)
16 {
17 radomCode += strList[r.Next(strList.Length)];
18 }
19 return radomCode;
20 }
21
22 /**//**//**//// <summary>
23 /// 创建随机验证字符的IMAGE,并保存,同时返回随机字符串
24 /// </summary>
25 /// <param name="iWidth">图片宽度 0时,默认为55</param>
26 /// <param name="iHeight">图片高度 0时,默认为22</param>
27 /// <param name="font">字符字体 null时,默认为 "Arial", 12, FontStyle.Bold</param>
28 /// <param name="sb">字符颜色 null时,默认为红</param>
29 /// <param name="ImagePath">需要保存的文件绝对路径</param>
30 /// <param name="strList">随即字符库 null时,默认为0-9A-Z</param>
31 /// <returns>返回随机字符串</returns>
32 public string createImgWithStr(int iWidth,int iHeight,Font font,SolidBrush sb ,string ImagePath,char[] strList)
33 {
34 if (font == null)
35 font = new Font("Arial", 12, FontStyle.Bold);
36 if (sb == null)
37 sb = new SolidBrush(Color.Red);
38 if (iWidth == 0)
39 iWidth = 55;
40 if (iHeight == 0)
41 iHeight = 22;
42 //得到随机字符串
43 string imageString = imageStr(strList);
44 //定义横向竖向都画4跳线
45 int lineCount = 4;
46 这2支笔用来画线条的
47 Pen pen1 = new Pen(Color.Gold, 1);
48 Pen pen2 = new Pen(Color.Black, 2);
49 //定义图片
50 Bitmap image = new Bitmap(iWidth, iHeight);
51 //跟J2ME一样的画笔
52 Graphics g = Graphics.FromImage(image);
53 //先画背景色 当然你可以自定义下
54 g.Clear(ColorTranslator.FromHtml("#F0F0F0"));
55 //确定写字的落点
56 Rectangle rect = new Rectangle(5, 2, iWidth, iHeight);
57
58 Random r = new Random();
59
60 //默认随机画横向竖向4条线
61 for(int i =0;i<lineCount;i++)
62 {
63 Point p1 = new Point(0, r.Next(iHeight));
64 Point p2 = new Point(iWidth, r.Next(iHeight));
65 Point p3 = new Point(r.Next(iWidth), 0);
66 Point p4 = new Point(r.Next(iWidth), iHeight);
67 g.DrawLine(pen1, p1, p2);
68 g.DrawLine(pen2, p3, p4);
69 }
70 //写字
71 g.DrawString(imageString, font, sb, rect);
72 //删除源文件
73 if (File.Exists(ImagePath))
74 File.Delete(ImagePath);
75 //保存文件,我定义为jpeg格式
76 image.Save(ImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
77 //释放资源
78 g.Dispose();
79 image.Dispose();
80
81 return imageString;
82 }
另外,我在实际运用过程中总是发现重新生成了图片,但是显示却还是以前那张,最后在网上找到了答案:
原本的<asp:Image ID="Image1" runat="server" ImageUrl="~/a.jpg" />
改成<asp:Image ID="Image1" runat="server" ImageUrl="~/a.jpg?temp=<%= DateTime.Now.Ticks%>" />
就能够自动更新了。。
转载于:https://www.cnblogs.com/jimmypony/archive/2008/03/19/1113397.html
C#创建简单的验证码相关推荐
- php gd图片验证,php笔记之GD库图片创建/简单验证码
燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.in ...
- 验证码实现php 难点,php实现简单的验证码功能
php实现简单的验证码功能<?php //简单的验证码 //随机数 //为什么要循环0-15之间的数呢? //因为要实现最简单的字母和数字混搭 //十六进制0-9 a-f //dechex -- ...
- php简单验证码实例,php结合GD库简单实现验证码的示例代码
前几日正好重温下GD库,来玩一下生成带有干扰素的验证码. 生成字母数字的图片验证码 首先需要看php.ini配置文件中有没有GD库,如果没有开启,请自行开启下,我用的小皮面板,基本现在都给你带上了. ...
- python编写一个登陆验证程序_用python实现一个简单的验证码
我们经常在登录一个网站,或者注册的时候需要输入一个验证码,有时候觉得很烦,因为有些验证码不仅复杂还看不清,许多用户就会因为这些而懒得再登录或者注册之类的. 既然验证码会造成流失用户的风险,为什么大家都 ...
- javaweb项目如何实现简单的验证码(以及eclipse和Linux下验证码加载不出来)
像这样简单的验证码如何生成并显示在页面上并能点击不断刷新验证码呢? 1.首先创建一个servlet包并创建一个VerificationCodeServlet package codewen.bookc ...
- Linux下安装Weblogic10.3.6并创建简单集群测试
Linux下安装Weblogic10.3.6并创建简单集群进行测试 一.卸载随系统安装的openjdk 1.先查看安装的jdk信息,常用命令有rpm -qa | grep java, rpm -qa ...
- python图像验证码识别_python 简单图像识别--验证码
python 简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...
- python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...
原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...
- django初探-创建简单的博客系统(一)
django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...
最新文章
- Activity平移动画
- IdentityServer Topics(2)- 定义资源
- Windows2003 IIS6.0启用Gzip功能
- 面试进阶之字符串常量池
- Drools可执行模型还活着
- 如何查看mysql的gtid_汇总丨MySQL GTID技术点,看这一篇就够了!
- 组合数学-- 放回取样基础公式证明
- Flask框架 - 初识
- php flush 逐行显示_PHP逐行输出(ob_flush与flush的组合)
- 古人为什么不发明计算机,成语是汉语言文学中的经典,为何古人能够发明,现代却很少发明?...
- 把一个对象中的属性值赋值到另外一个对象中
- 算术右移 java_Java 中 算术右移和逻辑右移有什么区别?
- Win7下虚拟机安装Mac OS X
- C++之字符串大小写转换
- 视频画中画效果制作,原来这么简单就可以做出
- 上传App Store的截图尺寸
- 英语不好可以学mysql吗_请你不要坚持自学一直很烂的英语了,好吗?
- cent7虚拟机镜像_centos7.3系统下载
- 指向数组的指针的理解
- Android FaceBook登录问题记录
热门文章
- 虚拟机安装黑群晖_【群晖系统】HEI群辉DSM 6.2.1 系统安装图文教程 (19年2月)
- 编写程序,随机产生20个0到1之间的数,将这20个数写入文本文件中,要求每行5个数
- 最简单的控制台登录小案例,适合初学者
- CentOS下安装Memcached,Linux下安装Memcached,centos下安装memcached,linux下安装memcached...
- 剑指offer之礼物的最大值
- leetcode1033. 移动石子直到连续
- leecode26 删除排序数组中的重复项
- 小猫的java基础知识点汇总(下)
- 订单数据持久化和验证相关解决方案
- 如何正确编写linux守护进程