本文实例为大家分享了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生成字母验证码相关推荐

  1. python验证码生成器_用Python实现随机验证码

    0.说明 在网络上各种平台上登陆时,都会看到各种各样的验证码,大部分都是字母+数字的随机验证码,下面来主要是通过Python生成一个可以包含大小写字母和数字的随机验证码. 1.思路 在Python中, ...

  2. java获取首字母_【Java】获取中文首字母

    获取中文首字母 有时候,比如微信上根据名字拼音首字母排序并检索.那么用Java获取中文首字母是怎么实现的呢? 代码 不多说,直接上代码:(写个工具类) public class FirstCharUt ...

  3. java 查找大写字母_在Java中查找字符串的所有大写字母

    因此,我试图在用户输入的字符串中查找所有大写字母,但始终出现此运行时错误: Exception in thread "main" java.lang.StringIndexOutO ...

  4. java 包命名_【Java】包的命名规则

    命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...

  5. java 分割一个_分割java

    [java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...

  6. 2017年java笔试题_初级java程序员笔试题

    Java认证考试是业界唯一经Sun授权的Java认证,考试内容涉及所有Java相关知识.编程概念及applet开发技巧.下面是小编整理的关于java初级程序员面试题,欢迎大家参考! 一:判断题 1.J ...

  7. 学JAVA的诗句_学Java有感(终)

    大一的下半学期逐渐步入尾声,我的Java学习也以告一段落.经过一个学期的学习,不能说是融会贯通,但也算小有心得.下面就来谈谈我对这个学期Java学习的感受吧! 在大一的上半学期,我接触到了一个计算机语 ...

  8. java 月份缩写_关于java:如何将日期字符串解析为Date?

    本问题已经有最佳答案,请猛点这里访问. 如何将下面的日期字符串解析为Date对象? String target ="Thu Sep 28 20:29:30 JST 2000"; D ...

  9. java 函数 微秒_在Java中以微秒为单位解析时间

    我在解析2013-01-09 09:15:03.000000格式的Java时间字符串时遇到问题. 在我的数据中,最后三个数字始终为0(表示输入字符串仅具有毫秒精度),因此我将此格式传递给SimpleD ...

最新文章

  1. 分享一个ssh打通的脚本
  2. 2分钟读懂Hadoop和Spark的异同
  3. 对PostgreSQL缺省表空间的理解
  4. 《认清C++语言》---谈谈const
  5. 表单必填标星_怎么用JS做form表单验证,要详细代码,求救!(带星号的是必填项)...
  6. 分区表分区字段的update操作
  7. [CC]CC插件初探
  8. oracle sql within,Oracle SQL Model Clause
  9. Linux 环境变量配置全攻略
  10. Pycharm如何调整代码颜色以及字体样式
  11. 这九年来都在干嘛-兄弟连IT教育
  12. 【Visio】 windows Visio 画图
  13. 深入浅出的讲解傅里叶变换(原文作者 韩昊)
  14. Apache ab测试结果解析
  15. 模拟信号拉线位移编码器是如何来校准的?
  16. JAVA外包服务的整体工作流程有哪些
  17. 常用的java工具类
  18. http(https)请求响应状态码
  19. 开源大数据技术社区召集令
  20. 怎么找电脑服务器文档,电脑服务器地址怎么找

热门文章

  1. 保你学会Springboot如何前后端分离地传输数据!(后端,前端的坑过几天填上)
  2. word没有标题3和标题4的解决方式
  3. Layer-2方案StarkWare估值80亿 以太坊扩容方案重要角色
  4. 郦旭东小可爱的大数据算法课程期末复习
  5. C语言search函数的作用,C语言lsearch()函数:用于在给定的区域内从头到尾进行线性搜索...
  6. 学会了C语言/C++能做什么?我们一起来看看吧!
  7. C. Two Shuffled Sequences
  8. 程序员一周内了解一个行业的方法
  9. 裁员1700人,IBM 声称内部调整团队;谷歌将以26亿美元全现金收购Looker,绝对大手笔...
  10. 岩板铺地好吗_卧室铺地板还是瓷砖好 这里给你答案