由于验证码应用于网站很常见,笔者在这记录下以前用到过的一种生成验证码的简单方法。

基本思路:

1..新建2个web 页面:default.aspx和CreateImage.aspx。

2.准备在CreateImage.cs文件中写2个方法,一个是Createval(int length);另一个是 CreateImg(string val)。第一个方法用来产生随机数拼成的字符串;第二个方法传入的参数是第一个方法产生的字串,并生成图片。

3.在default.aspx页面显示CreateImage.aspx产生的图片

default.aspx具体的代码如下:

View Code

<head runat="server"><title></title><script language="javascript" type="text/javascript" >function getimg() {//document.getElementById("imgcode").src = "CreateImage.aspx";因为src地址和img默认src相同,click之后不会改变,所以我这里加了一个date参数document.getElementById("imgcode").src = "CreateImage.aspx?date=" + escape(new Date().getTime().toString(36));}</script>
</head>
<body><form id="form1" runat="server"><div><img id="imgcode" alt=""  src="CreateImage.aspx" οnclick="getimg()" /><!--第二种方法 --><a href="#" οnclick="document.getElementById('imgcode').src='CreateImage.aspx?temp='+ (new Date().getTime().toString(36)); return false">产生验证码</a> </div></form>
</body>

CreateImage.cs具体代码如下:

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.IO;public partial class CreateImage : System.Web.UI.Page
{public static string sessionkey;////此处用来保存验证码到Session的Key的名称 private const int ImageHeigth = 22;             //验证码图片的高度 private const double ImageLengthBase = 12.5;    //验证码图片中每个字符的宽度 private const int ImageLineNumber = 25;         //噪音线的数量 private const int ImagePointNumber = 100;       //噪点的数量 protected void Page_Load(object sender, EventArgs e){string val = Createval(4);CreateImg(val);}/// <summary>/// 产生4位随即数拼成的字串/// </summary>/// <param name="length"></param>/// <returns></returns>public string Createval(int length){StringBuilder returnvalue = new StringBuilder ();string temp = "0123456789abcdefghijklmnopqrstuvwxyz";Random rd = new Random();for (int i = 0; i < length;i++ ){returnvalue.Append(temp[rd.Next(0, 36)]);}Session[sessionkey] = returnvalue;//把生成的字串存入session中,以便在default页面比对输入的字符串是否与此处生成的相同,达到验证的作用return returnvalue.ToString();}/// <summary>/// 生成图片/// </summary>/// <param name="val"></param>public void CreateImg(string val){if (!string.IsNullOrEmpty(val)){this.Session[sessionkey] = val;//初始化位图Bitmap对象,指定图片对象的大小(宽,高) Bitmap image = new Bitmap((int)Math.Ceiling((double)(val.Length * ImageLengthBase)), ImageHeigth);//初始化一块画布 Graphics graphics = Graphics.FromImage(image);Random random = new Random();try{int num5;graphics.Clear(Color.White);//绘制噪音线 for (num5 = 0; num5 < ImageLineNumber; num5++){int num = random.Next(image.Width);int num3 = random.Next(image.Height);int num2 = random.Next(image.Width);int num4 = random.Next(image.Height);graphics.DrawLine(new Pen(Color.Silver), num, num3, num2, num4);}//验证码字体样式 Font font = new Font("Tahoma", 12, FontStyle.Italic | FontStyle.Bold);LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);//绘制验证码到画布 graphics.DrawString(val, font, brush, (float)2, (float)2);//绘制噪点 for (num5 = 0; num5 < ImagePointNumber; num5++){int x = random.Next(image.Width);int y = random.Next(image.Height);image.SetPixel(x, y, Color.FromArgb(random.Next()));}graphics.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);MemoryStream stream = new MemoryStream();//保存图片
                image.Save(stream, ImageFormat.Gif);base.Response.ClearContent();base.Response.ContentType = "image/Gif";base.Response.BinaryWrite(stream.ToArray());}finally{graphics.Dispose();image.Dispose();}} }
}

特别说明:生成图片的方法我是从网上找的,仅用来学习。

转载于:https://www.cnblogs.com/leofly/archive/2012/09/06/2674256.html

随笔之生成简单的验证码相关推荐

  1. JAVA手机验证码的生成简单实现

    public String generator(String tele){//利用哈希值生成验证码int hash =tele.hashCode();//加密int encryption= 20206 ...

  2. python图像验证码识别_python 简单图像识别--验证码

    python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...

  3. 使用Tensorflow构建和训练自己的CNN来做简单的验证码识别

    Tensorflow是目前最流行的深度学习框架,我们可以用它来搭建自己的卷积神经网络并训练自己的分类器,本文介绍怎样使用Tensorflow构建自己的CNN,怎样训练用于简单的验证码识别的分类器.本文 ...

  4. python批量生成,用python批量生成简单的xml文档

    最近生成训练数据时,给一批无效的背景图片生成对应的xml文档,我用python写了一个简单的批量生成xml文档的demo,遇见了意外的小问题,记录一下. 报错问题为:ImportError: No m ...

  5. php简单验证码实例,php结合GD库简单实现验证码的示例代码

    前几日正好重温下GD库,来玩一下生成带有干扰素的验证码. 生成字母数字的图片验证码 首先需要看php.ini配置文件中有没有GD库,如果没有开启,请自行开启下,我用的小皮面板,基本现在都给你带上了. ...

  6. python编写一个登陆验证程序_用python实现一个简单的验证码

    我们经常在登录一个网站,或者注册的时候需要输入一个验证码,有时候觉得很烦,因为有些验证码不仅复杂还看不清,许多用户就会因为这些而懒得再登录或者注册之类的. 既然验证码会造成流失用户的风险,为什么大家都 ...

  7. python 基于pillow模块生成随机图片验证码教程

    效果图 我们先来看一下大致的效果图. 以上图形都是用非常基础的元素随机构成的:点,线,曲线,文本.而pillow模块远远不止这些功能,如果学好了它,真的就是你想怎么花就怎么花. 那么现在我们就去学习一 ...

  8. javaweb项目如何实现简单的验证码(以及eclipse和Linux下验证码加载不出来)

    像这样简单的验证码如何生成并显示在页面上并能点击不断刷新验证码呢? 1.首先创建一个servlet包并创建一个VerificationCodeServlet package codewen.bookc ...

  9. python随机生成四位验证码的代码_Python random随机生成6位验证码示例代码

    随机生成6位验证码代码 # -*- coding: utf-8 -*- import random def generate_verification_code(): ''' randomly gen ...

  10. ASP.NET MVC 生成简单的 xml 权限结构

    ASP.NET MVC 生成简单的 xml 权限结构 当我的一个项目到尾声时,发现系统很多模块权限有遗漏.部分模块权限遗漏是由于前期开发速度太快,开发人员未先给模块加权限而后再编写该模块功能代码.当我 ...

最新文章

  1. html单选框背景图片,如何更改radio、checkbox选项框背景图?
  2. ARM体系结构及内核回顾总结(一)
  3. Unity3D谷歌地球
  4. UC浏览器怎么删除收藏历史?UC浏览器删除收藏历史的操作方法
  5. matlab中waitbar用法,matlab中waitbar
  6. NAPI 技术在 Linux 网络驱动上的应用和完善
  7. java调用caffe_Caffe中master与windows分支差异对比及通过命令提示符编译Caffe源码操作步骤...
  8. session 、cookie、token的区别
  9. Java基础之写文件——通过缓冲流写文件(StreamOutputToFile)
  10. 大胆尝试随需消费的软件培训模式
  11. Kettle——简介
  12. VB模拟按键终极教程
  13. delphi 应用程序开发工具
  14. 10. Linux驱动 - Ubuntu驱动签名
  15. 草稿草稿草稿22.10.9 “yuyu“ IO进程线程
  16. wordpress cookies 遇到预料外错误 阿里云虚拟机
  17. html图片点击左右滑动效果,基于jquery实现点击左右按钮图片横向滚动
  18. 【allegro 17.4软件操作保姆级教程三】布局操作基础一
  19. ActivityNet 2018介绍
  20. mysql executing_MySQL数据库出现慢查询的危害

热门文章

  1. arcpy.SpatialJoin_analysis 空间连接分析
  2. 去除椒盐噪声(简单的matlab代码实践,PSNR评价)
  3. 向量间的距离和范数到线性空间、赋范空间、內积空间
  4. 【ArcGIS|空间分析】栅格数据缓冲区分析-学校选址
  5. 消息服务器mq集群出现假死,排查tomcat项目假死原因的简单方法
  6. Flink SQL FileSystem Connector 分区提交与自定义小文件合并策略 ​
  7. OPPO 实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移
  8. 微信小程序开发--【Hello World 及代码结构】(二)
  9. 面试再问 HashMap,求你把这篇文章发给他!
  10. 2019,别进大厂了!