一》 原理:

  把用代码生成的图片存放到硬盘当中,然后在返回存储路径把图片通过图片标签的 src 属性 自动加载到浏览器中

二》 步骤

    1. 首先用GDI+ 绘图 把验证码图片给绘制出来

    2. 然后提前判断硬盘里是否有已生成的图片,如果有,则删除,以避免节省硬盘空间

    3. 把生成的验证码存放到 Session 会话当中,以供前台验证 填写验证码的准确性, 在构建文件路径,把验证码图片存入路径中

    4. 想前台返回路径

三》 代码实例如下

Identifying.html 代码

 <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>验证码实验</title>
<script src="jquery-1.4.1.js"></script>
</head>
<body>
验证码:
<div>
<img src="" id="tp"/><a href="javascript:void(0)" id="huan">看不清换一张</a>
</div>
<script type="text/javascript">
$(function () {
function xx() {
$.ajax({
url: 'Identif.ashx',
type: 'POST',
datatype: 'text',
success: function (data) {
$("#tp").attr("src", data.toString());
}
});
};
xx();
$("#huan").click(xx);
});
</script>
</body>
</html>

Identif.ashx 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Drawing;
using System.Web.SessionState; namespace FourmWeb.Identifying
{
/// <summary>
/// Identif 的摘要说明
/// </summary>
public class Identif : IHttpHandler,IRequiresSessionState
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";//响应报文主体的类型 string path = context.Request.MapPath("~/"); ;
Bitmap map = new Bitmap(, ); //创建位图文件
Graphics g = Graphics.FromImage(map); //画布 //填充背景颜色
g.FillRectangle(Brushes.White, , , , ); //随机产生验证码
string code = null;
Random re = new Random(Guid.NewGuid().GetHashCode()); //用哈希数做随机种子
for(int i = ; i < ; i++)
{
if (re.Next(, ) % == )
{
code += re.Next(, ).ToString();
}
else
{
code+= (Char)re.Next(, );
}
} //删除已存在的文件
if (context.Session["code"] != null)
File.Delete(path + context.Session["code"].ToString() + ".jpg"); //构建文件路径
path += code + ".jpg"; context.Session["code"] = code; //将验证码画到画布上
g.DrawString(code, new Font("宋体", ), Brushes.Gray, new PointF(, ));
//绘制干扰点
Random random = new Random();
for (int i = ; i<; i++)
{
map.SetPixel(random.Next(, ), random.Next(, ), Color.LightGray);
} //输出图像
map.Save(path); //发送相对路径
context.Response.Write("../"+code+".jpg"); context.Response.End(); } public bool IsReusable
{
get
{
return false;
}
}
}
}

      

Ajax动态刷新验证码图片的更多相关文章

  1. Django(九)下:Ajax操作、图片验证码、KindEditor使用

    三.Ajax操作 ajax操作基于浏览器的xmlHttpRequest对象,IE低版本是另外一个对象,jQuery 1 版本对那两个对象做了封装,兼容性最好,2 .3版本不再支持IE低版本了. Aja ...

  2. Servlet实现验证码图片(一)

    Servlet实现数字字母验证码图片(一): 生成验证码图片主要用到了一个BufferedImage类,如下:

  3. SpringMVC生成的验证码图片不显示

    近期用SSM框架写一个项目,登录模块需要生成验证码图片,我把相关的代码写好了之后传到 jsp ,但是图片不显示,查看控制台显示404,反复查询了一下代码并没有发现任何问题,代码如下: @Control ...

  4. Struts2 验证码图片实例

    本文转载于DongLiYang的博客http://www.cnblogs.com/dongliyang/archive/2012/08/24/2654431.html 其中修改过一部分,针对使用注解而 ...

  5. java web学习总结(九) -------------------通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  6. android 生成验证码图片

    (转自:http://blog.csdn.net/onlyonecoder/article/details/8231373) package com.nobeg.util; import java.u ...

  7. delphi WebBrowser控件上网页验证码图片识别教程(一)

    步骤一:获取网页中验证码图片的url地址 在delphi中加入一个BitBtn和一个memo以及WebBrowser控件实现网页中验证码图片的url地址的获取 程序如下:procedure TForm ...

  8. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

  9. JavaWeb---总结(九)通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片  1 package gacl. ...

随机推荐

  1. ng-options

    tr td 地点 td select.form-control(required="true" ng-model="addkc.dd" ng-options=& ...

  2. 模糊系统架构和简单实现--AForge.NET框架的使用(四)

    原文:模糊系统架构和简单实现--AForge.NET框架的使用(四) 先说一下,为什么题目是简单实现,因为我实在没有弄出好的例子. 我原来用AForge.net做的项目中的模糊系统融入了神经网络和向量 ...

  3. Android双击返回键退出Activity的两种方法

    在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记 ...

  4. [LeetCode] 134. Gas Station 解题思路

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  5. POJ-魔兽世界之一:备战

    描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市. 红司令部,City 1,City 2,……,City n,蓝司令部 两军的司令部都会制造武士.武士一共 ...

  6. Tradesy | IT桔子

    Tradesy | IT桔子 Tradesy www.tradesy.com   认领 关注 分享

  7. javascript 单个图片的淡入淡出效果和多张图片的淡入淡出效果

    最近刚好在看之前妙趣网站的javascript 初级运动教程,教程里说设置图片的透明度使用了一个变量.这种方法确实不错,但是燕姐喜欢麻烦.就用自己的理解方法写了一遍.其中也是各种坑.现在先把一个图片的 ...

  8. jsonp封装

    //jsonp的封装函数 function jsonp(url,parmter,callback){ //创建script标签 var script=document.createElement('s ...

  9. 【C#多线程】C#多线程 Thread 开发基础

    引用 using System; using System.Threading; 多线程代码 Thread mainthread = new Thread(ExecuteThread); mainth ...

  10. MySQL删除外键定义的方法

    MySQL外键在定以后,如果我们不再需要这个外键,可以进行删除操作,下面就为您介绍MySQL删除外键定义的方法,供您参考. 不知道大家有没有发现,在定义外键的时候articles.member_id外 ...