Captcha生成及使用

@Controller
@RequestMapping("/PictureCheckCode")
public class ServletController {

    @RequestMapping
    public void pictureGenerate( HttpServletRequest req, HttpServletResponse res ) {
        try {
             MakePicture mp=new MakePicture() ;
             String str=mp.drawPicture(60, 20,res.getOutputStream() );
             req.getSession().setAttribute("pic", str);
             res.getOutputStream().print(str);
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}
<form th:action="@{/login}" method="post">
            <div><label> User Name : <input type="text" name="username"/> </label></div>
            <div><label> Password: <input type="password" name="password"/> </label></div>
            <div><label> Verify: <img src="PictureCheckCode"  onclick="this.src=‘PictureCheckCode?d=‘+new Date().getTime()"/> </label></div>
            <div><input type="submit" value="Sign In"/></div>
</form>
package hello;

import java.awt.Graphics;
import java.awt.Font;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.util.Random;
import java.io.OutputStream;
import java.io.IOException;
public class MakePicture  //产生识别验证图像
{
	private char charTable[]={
		‘a‘,‘A‘,‘b‘,‘B‘,‘c‘,‘C‘,‘d‘,‘D‘ ,‘e‘,‘E‘ ,
		‘f‘,‘F‘,‘g‘,‘G‘,‘h‘,‘H‘,‘i‘,‘I‘,‘j‘,‘J‘ ,
		‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘
	};
	public String drawPicture(int width,int height,OutputStream os)
	{
		if(width<=0)
			width=100 ;
		if(height<=0)
			height=60 ;

		BufferedImage image=new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB) ;
		Graphics g=image.getGraphics()  ;
		g.setColor(Color.LIGHT_GRAY) ;
		g.fillRect(0, 0, width, height)  ;
		g.setColor(new Color(0x5265fd)) ;
		g.drawRect(0, 0, width, height)  ;
		String str ="" ;
		for(int x=0;x<4;x++)
		{
		  str+=charTable[(int) (Math.random()*charTable.length)];
		}

		g.drawString(str.substring(0, 1), 0, 15);
		g.drawString(str.substring(1, 2), 15, 17);
		g.drawString(str.substring(2, 3), 35, 19);
		g.drawString(str.substring(3, 4), 50, 16);
		Random rand=new Random() ;
		for(int i=0;i<10;i++)
		{
		  int x=rand.nextInt(width)  ;
		  int y=rand.nextInt(height)  ;
		  g.drawOval(x, y, 1, 1) ;
 		}
		g.dispose()  ;
		try {
			ImageIO.write(image, "JPEG",os) ;
		} catch (IOException e) {

			e.printStackTrace();
			return "" ;
		}

	   return str ;
	}
}

  

时间: 2024-11-05 14:37:56

Captcha生成及使用的相关文章

php GD库类

<?php // header("Content-type:text/html;charset=utf-8"); /** * GD库类 * 功能:水印 缩略图 验证码 */ class ImageTool{ protected static $erroTxt; /** * getImgInfo * 获取图片信息 * param filename * return Array/False */ protected static function getImgInfo($filena

15分钟破解网站验证码

概述 很多开发者都讨厌网站的验证码,特别是写网络爬虫的程序员,而网站之所以设置验证码,是为了防止机器人访问网站,造成不必要的损失.现在好了,随着机器学习技术的发展,机器识别验证码的问题比较好解决了. 样本采集工具 这里我们采用wordpress的Really Simple CAPTCHA生成验证码的插件,之所以选择这个插件,一个是它的安装量很大,二个是因为它是开源的,我们可以利用它批量的生成验证码图片. 目标估计 我们通过demo网站得知,Really Simple CAPTCHA生成的是包含4

新经资讯项目业务逻辑梳理

一.项目分析 (一)新经资讯 1.新闻展示的Web项目 2.以抓取其他网站数据为新闻.用户发布数据为来源 3.基于Flask框架,前后端不分离 (二)技术实现 1.使用Flask框架实现 2.使用Redis + MySQL 进行数据存储 3.使用第三方扩展 (1)云通信 (2)七牛云 (三)功能模块分类 1.新闻模块 2.用户模块 3.后台管理模块 (四)项目目录说明 1.项目根目录 说明 /info 项目应用核心目录 /logs 项目日志目录 config.py 项目配置文件--保存sessi

laravel 添加验证码

1.  安装依赖  composer require gregwar/captcha 2.使用 use Gregwar\Captcha\CaptchaBuilder; use DB; use Request; use Session; //生成验证码 public function captcha() { //生成验证码图片的Builder对象,配置相应属性 $builder = new CaptchaBuilder; //可以设置图片宽高及字体 $builder->build($width =

django 用户注册功能实现

增加views的类 class RegisterView(View): def get(self, request): return render(request, 'register.html', {}) 增加urls.py的url url(r'^register/$', RegisterView.as_view(), name="register") 这样可以调用register.html了,修改index.html的注册按键的跳转代码 <a style="colo

用Python机器学习搞定验证码

马哥Linux运维 写爬虫有一个绕不过去的问题就是验证码,现在验证码分类大概有4种: 图像类 滑动类 点击类 语音类 今天先来看看图像类,这类验证码大多是数字.字母的组合,国内也有使用汉字的.在这个基础上增加噪点.干扰线.变形.重叠.不同字体颜色等方法来增加识别难度.相应的,验证码识别大体可以分为下面几个步骤: 灰度处理 增加对比度(可选) 二值化 降噪 倾斜校正分割字符 建立训练库 识别 由于是实验性质的,文中用到的验证码均为程序生成而不是批量下载真实的网站验证码,这样做的好处就是可以有大量的

Flask 知识点

flask知识点 app.config['JSON_AS_ASCII'] = False #中文转换@app.route('/user/<user>')动态路由,通过函数传参jsonify() 转换成页面能看懂得json字符串redirct('') 跳转路由地址redirct(url_for(函数名)) 跳转函数名abort(404) 抛出异常'{}'.format(函数) 格式化格式 动态传参 max_age = 3600 设置过期时间 秒ck = make_response() 生成一个复

图型验证码的使用

1,流程图: 2,使用步骤: 1,下载pillow 2,使用captcha框架的generate_captcha()函数生成对应的文字和图片 3,再setting中准备redis库,保存文字信息 4,实现接口代码 例如: from django.views import View from django_redis import get_redis_connection from meimei.libs.captcha.captcha import captcha class ImageCode

使用 Python 生成验证码(CAPTCHA)

CAPTCHA 图像 Python 数据可视化编程实战代码 点击查看详细内容 from PIL import Image, ImageDraw, ImageFont import random import string class SimpleCaptchaException(Exception): pass class SimpleCaptcha(object): def __init__(self, length=5, size=(200, 100), fontsize=36, rando