博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java验证码
阅读量:4967 次
发布时间:2019-06-12

本文共 2269 字,大约阅读时间需要 7 分钟。

package utils;
 
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class CodeUtils {
 //10.得到随机数
 private static char[] chars = "abdefghijkmnpqrstuvwxyABCDEFGHIJKLMNPQRSTUVWXY3456789".toCharArray();
 private static Random random = new Random();
 private static String getCode(int length){
  StringBuffer sb = new StringBuffer();
  for(int i=0;i<length;i++){
   sb.append(chars[random.nextInt(chars.length)]);
  }
  return sb.toString();
 }
 
 public static void createCode(HttpServletRequest req,HttpServletResponse resp){
  try {
   //1.创建画布
   BufferedImage bufferedImage = new BufferedImage(120, 34, BufferedImage.TYPE_INT_RGB);
   //2.创建画笔
   Graphics2D graphics2d = bufferedImage.createGraphics();
   //6.设置背景颜色  , 先设置画笔颜色  ,在把画布涂满
   graphics2d.setColor(new Color(249, 250, 108));
   //7.涂满画布
   graphics2d.fillRect(0, 0, 120, 34);
   //8.更新画笔颜色
   graphics2d.setColor(new Color(62, 128, 27));
   //9.设置字体
   graphics2d.setFont(new Font("Dope Crisis", Font.PLAIN, 40));
   String code = getCode(4);
   //12.保存到sesssion中
   HttpSession session=req.getSession();
   session.setAttribute("code", code);
   session.setMaxInactiveInterval(1000);
   //3.写字
   graphics2d.drawString(code, 25,30);
   //4.收笔
   graphics2d.dispose();
   //5.保存到服务器上
   ImageIO.write(bufferedImage, "jpg", resp.getOutputStream());
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 public static void main(String[] args) throws Exception {
  //1.创建画布
  BufferedImage bufferedImage = new BufferedImage(120, 34, BufferedImage.TYPE_INT_RGB);
  //2.创建画笔
  Graphics2D graphics2d = bufferedImage.createGraphics();
  //6.设置背景颜色  , 先设置画笔颜色  ,在把画布涂满
  graphics2d.setColor(new Color(20, 123, 228));
  //7.涂满画布
  graphics2d.fillRect(0, 0, 120, 34);
  //8.更新画笔颜色
  graphics2d.setColor(new Color(246, 129, 50));
  //9.设置字体
  graphics2d.setFont(new Font("Dope Crisis", Font.PLAIN, 40));
  String num = getCode(4);
  //3.写字
  graphics2d.drawString(num, 25,30);
  //4.收笔
  graphics2d.dispose();
  //5.保存到硬盘上
  ImageIO.write(bufferedImage, "jpg", new File("c:\\abc.jpg"));
 }
 //11.保存到服务器上
}

转载于:https://www.cnblogs.com/lbbk/p/11275285.html

你可能感兴趣的文章
九涯的第一次
查看>>
处理器管理与进程调度
查看>>
页面懒加载
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
java -f_java学习笔记(一)
查看>>
java 什么题目好做_用java做这些题目
查看>>
java中的合同打印_比较方法违反了Java 7中的一般合同
查看>>
php 位运算与权限,怎么在PHP中使用位运算对网站的权限进行管理
查看>>
php include效率,php include类文件超时
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
wcdma下行如何解扩解扰 matlab,WCDMA技术基础.ppt
查看>>
MySQL date_format() 函数
查看>>
mysql 时间处理
查看>>
mysql adddate()函数
查看>>
mysql addtime() 函数
查看>>
mysql 根据日期时间查询数据
查看>>
mysql sin() 函数
查看>>
mysql upper() 函数
查看>>
mysql 子查询
查看>>