`

图像验证码

阅读更多

 

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

    recap v2图像谷歌图像验证码难度高

    标题中提到的“recap v2图像谷歌图像验证码难度高”暗示了谷歌图像验证码的升级版本(即v2版本)相较于旧版本,在识别难度上有所提升。这种难度的增加可能是通过更为复杂的图像扭曲、颜色变化、背景干扰、字符粘连等...

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

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

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

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

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

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

    基于Matlab的数字图像验证码识别新版算法源码.zip

    《基于Matlab的数字图像验证码识别新版算法源码》是一份极具价值的学习资源。该源码聚焦于数字图像验证码识别领域,利用Matlab强大的数据处理和分析能力,实现了新颖且高效的识别算法。 在当今数字化时代,验证码...

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

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

    基于CNN的图像验证码识别源码(含图片).zip

    图像验证码识别技术是一种重要的网络安全技术,主要应用于网站注册、登录等环节,用以区分用户是计算机还是人类,以防止恶意自动化攻击。随着互联网技术的发展,验证码的形式不断更新,传统的基于字符的验证码已逐渐...

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

    图像验证码作为防止自动化的简单而有效的工具,普遍应用于各种在线服务中,用以区分人类用户与机器程序。然而,图像验证码的存在也给用户带来了一定程度上的不便,尤其是对视障用户或是在移动设备上操作时。为了解决...

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

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

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

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

    java一键生成图像验证码

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

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

    在当今数字时代,图像验证码已成为网站验证用户是否为人类的一种常见手段。然而,由于图像验证码可能对用户体验造成不便,因此研究如何使用卷积神经网络(CNN)来识别和解决验证码成为了一个活跃的研究领域。本文档...

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

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

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

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

    基于KNN算法的图像验证码分类与识别技术解析

    内容概要:本文聚焦于图像验证码的识别流程,详细介绍了特征提取、样本训练以及最终的识别三个关键步骤。特别强调了KNN(K近邻)算法在此过程中扮演的重要角色。文中不仅解释了每个环节的具体操作方式和技术细节,还...

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

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

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

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

Global site tag (gtag.js) - Google Analytics