生成4位验证码(后台)
生成验证码图片
1.contorller层
@RequestMapping("/getSecurityCode") //对应/user/valicode.do请求 @ResponseBody public UserResult valicode(HttpServletResponse response,HttpSession session){ //利用图片工具生成图片 try { //第一个参数是生成的验证码,第二个参数是生成的图片Object[] objs = ImageUtil.createImage();//将验证码存入Sessionsession.setAttribute("imageCode",objs[0]); //将图片输出给浏览器log.info("------图片session----"+objs[0]);BufferedImage image = (BufferedImage) objs[1];response.setContentType("image/png");OutputStream os = response.getOutputStream();ImageIO.write(image, "png", os);return UserResult.ok(null, "ok");} catch (Exception e) {e.printStackTrace();log.info(e.fillInStackTrace());return UserResult.error(ToolString.exception, "验证码生成异常!");} }
2.ImageUtil工具类
package com.soshare.util;import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Random;import javax.imageio.ImageIO;public class ImageUtil {// 验证码字符集private static final char[] chars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n','o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};// 字符数量private static final int SIZE = 4;// 干扰线数量private static final int LINES = 5;// 宽度private static final int WIDTH = 80;// 高度private static final int HEIGHT = 40;// 字体大小private static final int FONT_SIZE = 30;/*** 生成随机验证码及图片* Object[0]:验证码字符串;* Object[1]:验证码图片。*/public static Object[] createImage() {StringBuffer sb = new StringBuffer();// 1.创建空白图片BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);// 2.获取图片画笔Graphics graphic = image.getGraphics();// 3.设置画笔颜色 graphic.setColor(Color.LIGHT_GRAY);// 4.绘制矩形背景graphic.fillRect(0, 0, WIDTH, HEIGHT);// 5.画随机字符Random ran = new Random();for (int i = 0; i <SIZE; i++) {// 取随机字符索引int n = ran.nextInt(chars.length);// 设置随机颜色 graphic.setColor(getRandomColor());// 设置字体大小graphic.setFont(new Font(null, Font.BOLD + Font.ITALIC, FONT_SIZE));// 画字符 graphic.drawString(chars[n] + "", i * WIDTH / SIZE, HEIGHT*2/3);// 记录字符 sb.append(chars[n]);}// 6.画干扰线for (int i = 0; i < LINES; i++) {// 设置随机颜色 graphic.setColor(getRandomColor());// 随机画线 graphic.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT),ran.nextInt(WIDTH), ran.nextInt(HEIGHT));}// 7.返回验证码和图片return new Object[]{sb.toString(), image};}/*** 随机取色*/public static Color getRandomColor() {Random ran = new Random();Color color = new Color(ran.nextInt(256), ran.nextInt(256), ran.nextInt(256));return color;}//验证码是否正确public static boolean validate(String code,String session) {if(!Tool.isNotNull(code)||!Tool.isNotNull(session)) {return false;}code = code.toUpperCase();session = session.toUpperCase();return code.equals(session);}public static void main(String[] args) throws IOException {Object[] objs = createImage();BufferedImage image = (BufferedImage) objs[1];OutputStream os = new FileOutputStream("d:/1.png");ImageIO.write(image, "png", os);os.close();}}
转载于:https://www.cnblogs.com/qzg3362/p/8471385.html
生成4位验证码(后台)相关推荐
- python随机生成四位验证码的代码_Python random随机生成6位验证码示例代码
随机生成6位验证码代码 # -*- coding: utf-8 -*- import random def generate_verification_code(): ''' randomly gen ...
- js随机生成4位验证码
方法一: /*随机生成4位验证码*//*step1:将所有字母,数字装入一个数组备用*/var codes=[];//数字:48-57;unicode编码for(var i=48;i<57;co ...
- python随机数生成验证码_Python随机数random模块学习,并实现生成6位验证码
一.前言 学习python随机数random模块的使用 ,并使用模块中的函数,实现6位验证码生成 二.random模块 1.random.random() 返回0-1直接的随机数,类型为float & ...
- random随机生成5位验证码(数字、大写字母、小写字母)
random模块即可 # random.randrange(start,end) # 生成一个从start到 end-1 范围的整数 # random.randint(start,end) # 生成一 ...
- js随机生成4位验证码(包括数字英文大小写)
html部分 验证码<input type="text" value="" id="txt" /><input type= ...
- python生成4位验证码_Python 生成4位验证码图片
import random import string from PIL import Image,ImageDraw,ImageFont,ImageFilter # 字体的位置 font_path ...
- python生成4位验证码random_python 生成验证码很简单:random和srting的方法
介绍random和string的有关用法,基础的. sting:------------------获取到0-9十个数字和26个小写大写字母,一共62个. string.printable: > ...
- Java——随机生成4位验证码,由用户输入并验证是否输入正确,如果输入错误就生成新的验证码让用户重新输入,最多输入5次
引入包: import java.util.Scanner; import java.util.Random; main函数: public static void main(String[] arg ...
- python生成6位验证码随机数,需包含英文字母大写、小写和数字(含代码和注释)
具体见代码和注释: def get_code():code_list = []# for i in range(10): # 0~9for i in range(48,57): #ASCII表示的数字 ...
最新文章
- 跨学科整合,打造大数据最强集团军:清华大学大数据能力提升项目宣讲会来了!...
- 使用WinSCP在WIndows与树莓派之间传递文件
- taro 重新加载小程序_taro-music一款开源网易云音乐小程序
- 再见XShell!这款国产终端更好用!
- Java深入研究_Java深入研究【1、object类】
- 动态可订制属性的 PropertyGrid(转载)
- 点击列表高亮_HTML5 标签列表
- ubuntu 下重装mysql若干问题
- 2017.10.16 水管局长水管局长数据加强版 思考记录
- clob mybatis_spring + mybatis 存取clob
- Pandas DataFrame GroupBy.Apply
- Exchange误删除邮箱用户后恢复账户问题
- 了解 Promise.any() 用法
- win7清理系统后,音频设备被禁用,没有声音
- hibernate 教程 笔记
- access无法 dolby_Win10专业版装不了dolby该怎么办?Win10 dolby音效驱动安装教程
- python 爬取海量网易云评论并写入数据库
- 一牛网:最新6月手机综合性能评测
- 元宇宙到底是什么?让我们来看看科技达人们是怎么讲的。
- [Ubuntu] Ubuntu16.04+win10+联想Y7000+显卡+WIFI 装机成功
热门文章
- python的安装教程-python安装教程
- python基础知识点总结-Python基础知识总结
- python读取excelsheet-python读取excel文件中所有sheet表格
- python到底可以做什么-Python到底可以做什么?
- python代码大全o-python文件编码及执行
- python要学多久-零基础python培训需要学多久?
- 疯狂python讲义视频 百度云-疯狂Python讲义 PDF 含源码工具版
- python for-Python for循环及基础用法详解
- python基础知识梳理-Python基础知识梳理 - 第03部分
- python语言入门教程-菜鸟学Python入门教程大盘点|7个多月的心血总结