using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using System.Web;
using System.Web.SessionState;

namespace HttpModuleDemo
{
    /// <summary>
    /// VerificationCode 的摘要说明
    /// </summary>
    public class VerificationCode : IHttpHandler,IRequiresSessionState 
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpeg";
            //建立Bitmap对象,绘图
            //Bitmap:是用于处理由像素数据定义的图像的对象
            Bitmap bitmap = new Bitmap(200,60);
            //Graphics:封装一个 GDI+ 绘图图面
            Graphics graph = Graphics.FromImage(bitmap);
            graph.FillRectangle(new SolidBrush(Color.White), 0, 0, 200, 60);
            Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);
            Random r = new Random();
            string letters = "ABCDEFGHIJKLMNPQRSTUVWXYZ";
            string letter;
            StringBuilder s = new StringBuilder();
            
            //添加随机的五个字母
            for (int x = 0; x < 5; x++)
            {
                letter = letters.Substring(r.Next(0, letters.Length - 1), 1);
                s.Append(letter);
                graph.DrawString(letter, font, new SolidBrush(Color.Black), x * 38, r.Next(0, 15));
            }
            /*
            //混淆背景
            Pen linePen = new Pen(new SolidBrush(Color.Black), 2);
            for (int x = 0; x < 6; x++)
                graph.DrawLine(linePen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));
            */
            //将图片保存到输出流中      
            bitmap.Save(context.Response.OutputStream, ImageFormat.Jpeg);

////如果没有实现IRequiresSessionState,则这里会出错,也无法生成图片
            context.Session["CheckCode"] = s.ToString();
            context.Response.End();   
        }

public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

转载于:https://www.cnblogs.com/AngelLee2009/archive/2011/10/29/2228278.html

通过IHttpHandler实现图片验证码相关推荐

  1. java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...

    JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取) 发布时间:2018-05-18 16:41, 浏览次数:632 , 标签: JAVA HttpClien ...

  2. 前端验证码后端返回一个图片_Web后端开发(6)——简易图片验证码的制作

    大家在登录或注册某些网站的时候经常会看到一些随机的图片验证码,那么这些验证码到底是怎么制作的呢?下面我们就从最简单的制作方法中学一下验证码的制作过程. 创建图片对象 要制作图片验证码,首先要创建一个图 ...

  3. 图片验证码把我逼成了人工智障

    上网登录日常:请证明你不是机器人. 可一看到某些验证码,强迫症患者首先就蚌埠住了: 你说最右那俩方块我到底是选还是不选呢? 还经常会让人产生这样的思考: 红绿灯的杆子到底算不算红绿灯呢? 在终于向机器 ...

  4. dotnet core Linux下图片验证码解决方案

    dotnet core Linux下图片验证码解决方案 参考文章: (1)dotnet core Linux下图片验证码解决方案 (2)https://www.cnblogs.com/xxff/p/9 ...

  5. 字符识别Python实现 图片验证码识别

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  6. 图片验证码的JAVA工具类

    我们平时开发时经常会遇到需要图片验证码,基础的验证码包括了数字.字母.甚至可能有汉字.下面我给出一个简单的工具类. package com..ankang.tony.util;import java. ...

  7. linux下tomcat6无法显示图片验证码 少了图形插件

    linux下tomcat6无法显示图片验证码(windows下显示正常) 原创 2015年10月20日 10:31:47 3526 linux下tomcat6无法显示图片验证码(windows下显示正 ...

  8. PHP登录带图片,PHP登录注册完整图片验证码实现

    通过上一篇 PHP gd简单画图学习后.这篇将继续探索实现PHP图片验证码的实现.效果图如下 为什么需要验证码? 验证码设计.验证码一使用于用户注册和登录.主要是防止机器批量注册用户或机器频繁测试登录 ...

  9. javaweb利用servlet与struts2实现可点击刷新的基础图片验证码

    javaweb利用servlet实现图片验证码 验证码是登录验证的技术,可以一定程度防止恶意脚本刷网站,造成服务器压力. 具体实现思想很简单: 首先利用servlet产生一个随机的验证码, 保存在se ...

最新文章

  1. 【驱动】uboot环境变量分析
  2. 未来十年,人机交互将是重要的发展
  3. Android开发常用框架汇总
  4. Python使用numpy中的hstack函数水平堆叠(horizontally stack)数组实战
  5. 区块链智能合约solidity入门
  6. 5.2 FIR滤波器的卷积(脉冲响应、频率响应,幅频响应,暂态-搞不清楚的有救了啊)
  7. SAP Spartacus的PWA支持
  8. java floatmath_《Java1.doc
  9. c++ vector 一部分_为什么现在的手机都采用Type-C接口?它到底好在哪里?看完你就明白了...
  10. 关于android开源类库StickyListHeaderAdapter 的写法注意
  11. oracle往游标中存数据,Oracle数据库:ORACLE11G在存储过程里面遍历游标
  12. 2018-12-13丛晓强作业
  13. uboot驱动模型(DM)分析(一)
  14. Nacos 原理 Jraft Distro Grpc 持续跟新中...
  15. 计算机图形学 感想,OpenGL学习感想(一)
  16. idea修改主题后,重新设置字体大小
  17. 论文格式修改之英文摘要
  18. 定义int数组求所有奇数的和
  19. 秀米怎么添加附件链接,如Word、Excel、Pdf等
  20. mysql主从同步延迟优化大全

热门文章

  1. linux 杀死t状态进程,Linux下如何查杀stopped进程
  2. html一条横线在文本旁边_lt;delgt; | HTML删除标记标签
  3. jenkins 启动_CentOS 7 安装 Jenkins
  4. 【HDU 1711】Number Sequence(裸KMP算法)
  5. 【HDU 1735】字数统计(贪心,有缺陷的一道题)
  6. 第十一届河南省赛--H : Attack City and Capture Territory
  7. MYSQL的binary解决mysql数据大小写敏感问题
  8. 无重复字符的最长子串_滑动窗口
  9. 7-二路归并排序C实现(递增递减的简单转换)
  10. 小白视角看ros_openvino_toolkit