`

图像验证码

阅读更多

 

package test;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @author zhanglm E-mail:wuzhenzhong@hdxt.net.cn
 * @version 创建时间:2008-3-5 下午06:50:28
 * 类说明
 */

public class AuthImg extends HttpServlet
{
    /**
	 * 
	 */
	private static final long serialVersionUID = -6908297822846448990L;
	private Font mFont = new Font("Arial Black", Font.PLAIN, 16);
    public void init() throws ServletException
    {
        super.init();
    }
    Color getRandColor(int fc,int bc)
    {
        Random random = new Random();
        if(fc>255) fc=255;
        if(bc>255) bc=255;
        int r=fc+random.nextInt(bc-fc);
        int g=fc+random.nextInt(bc-fc);
        int b=fc+random.nextInt(bc-fc);
        return new Color(r,g,b);
    }

    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setHeader("Pragma","No-cache");
        response.setHeader("Cache-Control","no-cache");
        response.setDateHeader("Expires", 0);
        response.setContentType("image/jpeg");
        
        int width=100, height=18;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        
        Graphics g = image.getGraphics();
        Random random = new Random();
        g.setColor(getRandColor(200,250));
        g.fillRect(1, 1, width-1, height-1);
        g.setColor(new Color(102,102,102));
        g.drawRect(0, 0, width-1, height-1);
        g.setFont(mFont);

        g.setColor(getRandColor(160,200));
        for (int i=0;i<155;i++)
        {
            int x = random.nextInt(width - 1);
            int y = random.nextInt(height - 1);
            int xl = random.nextInt(6) + 1;
            int yl = random.nextInt(12) + 1;
            g.drawLine(x,y,x + xl,y + yl);
        }
        for (int i = 0;i < 70;i++)
        {
            int x = random.nextInt(width - 1);
            int y = random.nextInt(height - 1);
            int xl = random.nextInt(12) + 1;
            int yl = random.nextInt(6) + 1;
            g.drawLine(x,y,x - xl,y - yl);
        }

        String sRand="";
        for (int i=0;i<6;i++)
        {
			String tmp = getRandomChar();
            sRand += tmp;
            g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
	        g.drawString(tmp,15*i+10,15);
        }

        HttpSession session = request.getSession(true);
        session.setAttribute("rand",sRand);
        g.dispose();
        ImageIO.write(image, "JPEG", response.getOutputStream());
    }
    private String getRandomChar()
    {
		int rand = (int)Math.round(Math.random() * 2);
		long itmp = 0;
		char ctmp = '\u0000';
		switch (rand)
		{
			case 1:
				itmp = Math.round(Math.random() * 25 + 65);
				ctmp = (char)itmp;
				return String.valueOf(ctmp);
			case 2:
				itmp = Math.round(Math.random() * 25 + 97);
				ctmp = (char)itmp;
				return String.valueOf(ctmp);
			default :
				itmp = Math.round(Math.random() * 9);
				return String.valueOf(itmp);
		}
    }
}
分享到:
评论

相关推荐

    基于卷积神经网络的图像验证码识别.pdf

    "基于卷积神经网络的图像验证码识别" 本文提出了一种基于卷积神经网络的图像验证码识别方法,通过卷积层级联、残差学习、全局池化、分组卷积等技术手段,在保证识别准确率不受影响的情况下,大大降低了网络的参数量...

    如何用ServletJSP动态生成图像验证码

    ### 如何用Servlet与JSP动态生成图像验证码 在现代Web应用中,为了防止自动化的恶意操作,常常需要实现一种简单而有效的验证机制——验证码。本文将详细介绍如何使用Servlet与JSP技术动态生成图像验证码。 #### 一...

    基于深度学习的图像验证码识别研究.pdf

    基于深度学习的图像验证码识别研究 基于深度学习的图像验证码识别研究是指使用深度学习技术来识别和破解图像验证码的方法。图像验证码是指那些使用图像来表达验证码的验证码,例如12306官方网站登录界面的验证码。...

    C#识别图像验证码纯源码无需其它支持库

    在IT领域,图像验证码识别是一项常见的任务,尤其是在自动化测试、数据抓取以及网络安全等方面。本文将深入探讨如何使用C#语言实现一个纯源码的图像验证码识别系统,无需依赖任何外部库。 首先,我们要理解验证码的...

    基于机器学习的字符图像验证码识别研究.pdf

    "基于机器学习的字符图像验证码识别研究" 机器学习技术的兴起使得验证码识别变得更加智能和快速。该研究论文基于机器学习的字符图像验证码识别研究,旨在提高验证码的可靠性和识别准确率。 验证码是一种区分人工...

    基于TensorFlow 识别简单图像验证码内含数据集和模型.zip

    在本资源中,我们主要探讨的是使用TensorFlow框架进行图像识别,特别地,是针对简单图像验证码的识别。TensorFlow是Google开发的一个强大的开源库,它广泛用于机器学习和深度学习任务,包括图像分类、物体检测、自然...

    java一键生成图像验证码

    Java 生成图像验证码是一种常见的安全措施,用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、恶意登录等。本资源提供了一种简洁高效的方法,仅需一行代码即可生成验证码,非常适合快速集成到Java项目中...

    基于CNN的图像验证码识别单个验证码识别成功率99%.zip

    在本资源中,我们探讨的是如何利用卷积神经网络(CNN)进行图像验证码识别,实现了高达99%的单个验证码识别成功率。这是一个深度学习在图像处理领域的典型应用,具有较高的实用价值。 首先,我们要理解卷积神经网络...

    基于Python实现使用 TensorFlow 识别简单图像验证码.zip

    在本项目中,我们将深入探讨如何使用Python编程语言和强大的机器学习库TensorFlow来实现一个简单的图像验证码识别系统。这个课程设计旨在帮助学生理解和实践深度学习在图像处理领域的应用,特别是验证码识别,这是一...

    Python-captcha一个验证码库可以产生声音和图像验证码

    - 图像验证码:Python-captcha可以生成各种形状、颜色和扭曲的文本图像,增加机器识别的难度,从而有效阻止自动脚本的攻击。 - 声音验证码:除了图像验证码,该库还支持生成语音验证码,为视力障碍或不方便阅读的...

    基于keras识别图像验证码内含数据集和预训练模型.zip

    在本资源中,我们主要探讨的是使用Keras库进行图像验证码识别的深度学习项目。图像验证码识别是一项重要的技术,常用于网络安全,防止自动化程序(如机器人)进行非法操作。Keras是一个高级神经网络API,它建立在...

    晨星通用图像验证码组件1.0(BETA1)

    组件支持随机生成数字或汉字图像验证码 使用图像验证码组件时需将Validate.dll和Number.aspx文件添加到工程中 并在HTML代码内添加代码:文件所在路径"&gt;

    PHP生成图像验证码的方法小结(2种方法)_.docx

    在PHP中,生成图像验证码是防止自动化脚本或者机器人恶意操作的一种常见安全措施。验证码的主要目的是确保用户是人类,而非机器。以下是对两种PHP生成图像验证码的方法的详细说明: 1. **生成加法运算验证码图片**...

    python实现随机图像验证码的生成

    利用python生成随机的图像验证码,利用PIL、random、string三个库函数随机生成四位任意的图像验证码

    基于MATLAB完成数字验证码识别的GUI设计,图像处理,验证码识别等功能,采用多种方法完成图像二值化,最终验证码图像识别效果好

    基于MATLAB完成数字验证码识别的GUI设计,图像处理,验证码生成、识别等功能。采用BP神经网络来实现对验证码图像的识别。验证码的识别,大概分为图片预处理、分割字符、识别字符三个过程,其中分割字符最为困难。...

    php图像验证码生成代码

    在PHP中,图像验证码(CAPTCHA)是一种防止自动化程序(如机器人)进行恶意操作的安全机制。它通常用于用户注册、登录...通过这些技术,我们可以创建一个简单但有效的图像验证码系统,防止自动脚本对网站进行恶意操作。

    验证码库,可生成音频和图像验证码。-Python开发

    验证码生成音频和图像验证码的验证码库。 功能音频验证码DEMO图像验证码安装使用pip安装验证码:$ pip install captcha验证码生成音频和图像验证码的验证码库。 功能音频验证码DEMO图像验证码安装使用pip安装验证码...

    使用 TensorFlow 识别简单图像验证码

    大体流程 1.抓取验证码 2.给验证码打标签 3.图片预处理 4.保存数据集 5.构建模型训练 6.提取模型使用

Global site tag (gtag.js) - Google Analytics