使用java生成字母验证码

发布时间 - 2026-01-10 21:52:31    点击率:

本文实例为大家分享了java生成字母验证码的具体代码,供大家参考,具体内容如下

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.imageio.ImageIO;


public class VerifyCode {
  //图片宽高
  private int w=70;
  private int h=35;
  private Random r=new Random();
  private String[] fontNames={"宋体","华文楷体","黑体","微软雅黑","楷体_GB2312"};
  private String codes="234567890qwertyuipasdfghjkzxcvbnmQWERTYUIPASDFGHJKZXCVBNM";
  private Color bgColor=new Color(255,255,255);
  private String text;
  //生成随机颜色
  private Color randomColor(){
    int red=r.nextInt(150);
    int green=r.nextInt(150);
    int blue=r.nextInt(150);
    return new Color(red, green, blue);
    }
  //生成随机字体
  private Font randomFont(){
    int index=r.nextInt(fontNames.length);
    String fontName=fontNames[index];
    int style=r.nextInt(4);//0 无 1 粗体 2 斜体 3 粗+斜
    int size=r.nextInt(5)+24; //生成随机字号 24~28
    return new Font(fontName, style, size);
  }
  //干扰线
  private void drowLine(BufferedImage image){
    //生成4条干扰线
    int num=4;
    Graphics2D bi=(Graphics2D) image.getGraphics();
    for (int i = 0; i < num; i++) {
      int x1=r.nextInt(w);
      int x2=r.nextInt(w);
      int y1=r.nextInt(h);
      int y2=r.nextInt(h);
      bi.setStroke(new BasicStroke(1.5F));
      bi.setColor(Color.BLUE);//干扰线色
      bi.drawLine(x1,y1,x2,y2);
    }
  }
  //随机生成一个字符
  private char randomChar(){
    int index=r.nextInt(codes.length());
    return codes.charAt(index);
  }
  //图片缓冲区
  private BufferedImage createImage(){
    BufferedImage image=new BufferedImage(w, h, BufferedImage.TYPE_INT_BGR);
    Graphics2D bi=(Graphics2D) image.getGraphics();
    bi.setColor(this.bgColor);
    bi.fillRect(0, 0, w, h);
    return image;
  }
  //生成图片
  public BufferedImage getImage(){
    BufferedImage image=createImage();
    Graphics2D bi=(Graphics2D) image.getGraphics();
    StringBuilder sb=new StringBuilder();
    for (int i = 0; i <4; i++) {
      String string=randomChar()+"";
      sb.append(string);
      //每个字符占图片1/4宽
      float x=i*1.0F*w/4;
      //随机字体格式
      bi.setFont(randomFont());
      bi.setColor(randomColor());
      //把字写在图片适当处(h-6指图片距底部6个高度)
      bi.drawString(string, x, h-6);
    }
    this.text=sb.toString();
    drowLine(image);
    return image;
  }
  //返回得到的字体
  public String getText(){
    return text;
  }
  //把图片写入指定位置
  public static void output(BufferedImage image,OutputStream out){
    try {
      ImageIO.write(image, "JPG", out);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java生成字母验证码  # java生成验证码  # java验证码  # 基于JAVA的短信验证码api调用代码实例  # java验证码生成具体代码  # java生成图片验证码实例代码  # Java版仿QQ验证码风格图片验证码  # Java仿12306图片验证码  # javaWeb使用Kaptcha组件生成验证码  # Java实现图片验证码具体代码  # java生成图片验证码示例代码  # java登录验证码实现代码  # java 图片验证码的实现代码  # 微软  # 验证码  # 大家分享  # 写在  # 具体内容  # 大家多多  # 宋体  # 粗体  # String  # fontNames  # 华文  # VerifyCode  # public  # ImageIO  # int  # private  # text  # randomColor  # nextInt  # red 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: javascript基于原型链的继承及call和apply函数用法分析  七夕网站制作视频,七夕大促活动怎么报名?  PHP正则匹配日期和时间(时间戳转换)的实例代码  英语简历制作免费网站推荐,如何将简历翻译成英文?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Firefox Developer Edition开发者版本入口  WEB开发之注册页面验证码倒计时代码的实现  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何用AWS免费套餐快速搭建高效网站?  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  如何破解联通资金短缺导致的基站建设难题?  长沙企业网站制作哪家好,长沙水业集团官方网站?  LinuxCD持续部署教程_自动发布与回滚机制  如何在云主机上快速搭建多站点网站?  如何安全更换建站之星模板并保留数据?  Laravel怎么使用artisan命令缓存配置和视图  如何快速生成凡客建站的专业级图册?  制作企业网站建设方案,怎样建设一个公司网站?  网站建设整体流程解析,建站其实很容易!  java ZXing生成二维码及条码实例分享  js实现获取鼠标当前的位置  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  网站制作软件免费下载安装,有哪些免费下载的软件网站?  利用python获取某年中每个月的第一天和最后一天  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  phpredis提高消息队列的实时性方法(推荐)  活动邀请函制作网站有哪些,活动邀请函文案?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Python结构化数据采集_字段抽取解析【教程】  如何用狗爹虚拟主机快速搭建网站?  LinuxShell函数封装方法_脚本复用设计思路【教程】  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  图册素材网站设计制作软件,图册的导出方式有几种?  使用Dockerfile构建java web环境  昵图网官方站入口 昵图网素材图库官网入口  如何在万网开始建站?分步指南解析  做企业网站制作流程,企业网站制作基本流程有哪些?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  如何快速生成高效建站系统源代码?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  网站制作报价单模板图片,小松挖机官方网站报价?  如何在腾讯云服务器快速搭建个人网站?  如何为不同团队 ID 动态生成多个“认领值班”按钮