`

图像验证码

阅读更多

 

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官方网站登录界面的验证码。...

    基于 python 用卷积神经网络进行图像验证码的识别

    【作品名称】:基于 python 用卷积神经网络进行图像验证码的识别 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: ...

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

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

    ocr-for-captcha 基于图像验证码的ocr识别

    OCR-for-Captcha是一种基于图像验证码的OCR(光学字符识别)技术,旨在自动识别和提取图像验证码中的字符信息。在现实生活中,图像验证码被广泛应用于各种网站和应用程序,以防止自动化机器人(例如恶意软件)的恶意...

    基于python + TensorFlow 实现的识别简单图像验证码

    【作品名称】:基于python + TensorFlow 实现的识别简单图像验证码 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: ...

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

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

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

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

    java一键生成图像验证码

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

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

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

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

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

    基于python+ CNN的图像验证码识别,单个验证码识别成功率99%

    【作品名称】:基于python+ CNN的图像验证码识别,单个验证码识别成功率99% 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目...

    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三个库函数随机生成四位任意的图像验证码

    使用卷积神经网络(CNN)解决图像验证码登录问题。从验证码下载、注释、简单图像

    使用卷积神经网络(CNN)解决图像验证码登录问题。从验证码下载、注释、简单图像处理、神经网络构建到自动批量注释、手动验证和模型迭代,准确率为96%。最后,该模型被应用于自动登录网站并从中抓取数据。G7_capchta...

    使用卷积神经网络识别图像验证码_ keras_captcha.zip

    使用卷积神经网络识别图像验证码_ keras_captcha

Global site tag (gtag.js) - Google Analytics