前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

1.生成工具类;

import java.awt.Color;

import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.util.Random;import javax.imageio.ImageIO;/*** 登陆图形验证码生成工具类* @author JiangYu*/
public class ImageCreate {public static void main(String[] args)throws Exception {//测试new ImageCreate().create();     }//验证码字符串private String codeV;public String getCode() {return codeV;}//生成验证码public BufferedImage create() throws Exception {// 大小int width = 120;int height = 30;/** Image是一个抽象列,BufferedImage是Image的实现。* Image和BufferedImage的主要作用就是将一副图片加载到内存中。*/// 声明一个 RGB格式图片:图片类型为rgbBufferedImage img = new BufferedImage(width, height,BufferedImage.TYPE_INT_BGR);// 获取画笔Graphics g = img.getGraphics();// 背景色g.setColor(Color.WHITE);// 画g.fillRect(0, 0, width, height);// 字体g.setFont(new Font("黑体", Font.BOLD, 18));//为codeV传值 String d ="";// 写一个字符到imgRandom r = new Random();for (int i = 0; i < 4; i++) {//生成随机字母 String chars = "ABCDEFGHJKMNOPQRSTUVWXYZ";char codeEnglish = chars.charAt((int)(Math.random() * 24));d += codeEnglish;codeV = d;// 画笔随机色g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));// 写出字符g.drawString("" + codeEnglish, i * 30, 10 + r.nextInt(20));   }//干扰线for(int i=0;i<4;i++){g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));//画线g.drawLine(r.nextInt(120), r.nextInt(30), r.nextInt(120), r.nextInt(30));}//图片生成g.dispose();//设置路径: 路径要用到转义\\
//       ImageIO.write(img,"JPEG", new FileOutputStream("H:\\JiangYu\\YanZhengImages\\yanZhengImage.jpg"));return img;}
}

2.  调用方法:

/*** 生成图形验证码* @param request* @param response* @throws Exception*/@RequestMapping(value="/getCode")public void getCode(HttpServletRequest request,HttpServletResponse response) throws Exception {ImageCreate i = new ImageCreate();//发送图片 ImageIO.write(i.create(), "JPEG", response.getOutputStream());  //验证码字符 String code = i.getCode().toString();  request.getSession().setAttribute("code", code);}

3. jsp  页面:

 <div style="margin-bottom: 20px"><input id="code" name="code" type="text" class="easyui-textbox" style="width: 39%;height: 40px; padding: 12px" data-options="prompt:'验证码',iconWidth:38" /><!-- 1.浮动提示框效果:easyui-tooltip、2.如果无法显示图像,浏览器将显示替代文本:alt属性 --><a href="#" title="看不清,点击换一下" class="easyui-tooltip"><img onclick="change()" class="easyui-linkbutton" src="/getCode" id="vimg" alt="" style="height: 40px;" /></a></div>
     //看不清,点击换一下function change() {//图片对象var imgNode = document.getElementById("vimg");$.ajax({url:"/getCode",type:"post",success:function(data){//改变src属性值 imgNode.src="/getCode?t=" + (new Date()).valueOf();},error:function(){alert(" 验证码图片路径获取失败 !");}});}

简单版:带干扰线的图形验证码生成相关推荐

  1. java 图形校验_java图形验证码生成工具类 web页面校验验证码

    java图形验证码生成工具类 web页面校验验证码 发布于 2020-7-14| 复制链接 摘记: 最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善.验证码生成器: ```java i ...

  2. java图形验证码生成工具类

    转载自   java图形验证码生成工具类 生成验证码效果       ValidateCode.java 验证码生成类 package cn.dsna.util.images; import java ...

  3. python 验证码去除干扰线,python 对验证码图片进行降噪处理

    python 对验证码图片进行降噪处理 发布时间:2018-05-16 20:38, 浏览次数:962 , 标签: python 首先贴一张验证码上来做案例: 第一步先通过二值化处理把干扰线去掉: f ...

  4. php 接口获得图形验证码,API接口图形验证码生成

    用途 适用于登录/注册/发送短信验证码前校验等等,代码可以整合到 ThinkPHP laravel 框架 使用 方法返回一个base64加密的图形,返回到前端即可,同时会返回一个解密的验证码(这个不到 ...

  5. 结合shiro 的图形验证码生成

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 在做用户登录功能时,很多时候都需要验证码支持,验证码的目的是为了防止机器人模拟真实用户登录而恶意访问 ...

  6. c# 图形验证码生成 代码解析

    之前做登录时,发送短信验证码需要做安全控制,使用到了图形验证码 使用的思路是: 1.建立一个验证码图片生成器页面 2.生成字母或数字组成的随机字符串 3.在Cookie中保存随机验证码 4.根据生成的 ...

  7. Python绘制带误差线的图形 Python plots with error bands

    If you want to plot a function curve with multiple parameters with errors, one way to visualize the ...

  8. 图形验证码生成及验证

    1.下载captch 执行命令: pip install  django-simple-captcha==0.4.6 2.配置路由 3.编写视图 代码: class ImageCode(APIView ...

  9. laravel图形验证码(借用了TP的图形验证码类)非常好用简单,非常适合前后端分离的项目

    class Captcha extends Controller {//protected $config = array('seKey' => 'jjh', // 验证码加密密钥'codeSe ...

最新文章

  1. windows线程同步-原子操作-Interlocked系列函数(用户模式)
  2. Shiro中的Remember me设置
  3. 免费开源、功能完善、暗黑风格,你会拒绝这款SSH工具吗?
  4. 【告别信】三年了,是该离开了!
  5. [音乐欣赏]Craigie Hill
  6. 开机直接进入键盘布局_不要亏待了你的手指,这款无线机械键盘了解一下
  7. maven到底是个啥玩意~
  8. 集中管理:领导者,不能不考虑的几件事之——“挖”出来的无限可能
  9. Oracle 10g RAC Installer 故障之--Oracle软件安装无法发现集群
  10. 聊一聊 java8 中的 Optional
  11. css3中transform属性及用法
  12. Anormaly_Detection_with_Keras
  13. 只需几步教你学会域名的使用方法
  14. NameError: name ‘xxx‘ is not defined问题总结
  15. K-Means聚类算法原理及实现
  16. 青山依旧在——从光荣到KOEI
  17. 第 4-8 课:Spring Boot 集成 ElasticSearch
  18. C语言代码覆盖率测试软件,代码覆盖率检测工具GCOV
  19. 访问网站php直接下载,访问php文件自动下载及502问题-Go语言中文社区
  20. linux vmware 共享文件夹共享,解决vmware上使用linux虚拟,无法共享文件的问题

热门文章

  1. 【JS 逆向百例】37网游登录接口参数逆向
  2. Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性
  3. 【Python CheckiO 题解】Speech Module
  4. CCIE理论-第五篇-SDA-2
  5. Mac下使用brew的常用步骤
  6. 【HRBUST - 1996】数学等式 (HASH 或 二分)
  7. 【EOJ Monthly 2018.10 - B】 莫干山奇遇 (思维构造,数学,数组,贪心)(总结)
  8. 百度顶会论文复现(2):GAN综述
  9. Mac系统容易忽视但很实用的命令整理
  10. linux用户登录实验,Linux用户和组相关命令及实验