java生成图片验证码示例代码
本文实例为大家分享了java图片验证码具体实现代码,供大家参考,具体内容如下
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.image.BufferedImage;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.util.Random;
importjavax.imageio.ImageIO;
/*
*步骤:
*1.画框
*2.画背景
*3.画字符
*4.画干扰线
*/
publicfinalclassImageUtil{
//验证码字符集
privatestaticfinalchar[]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'};
//字符数量
privatestaticfinalintSIZE=4;
//干扰线数量
privatestaticfinalintLINES=5;
//宽度
privatestaticfinalintWIDTH=80;
//高度
privatestaticfinalintHEIGHT=40;
//字体大小
privatestaticfinalintFONT_SIZE=30;
/**
*生成随机验证码及图片
*Object[0]验证码字符串String
*Object[1]验证码图片BufferedImage
*/
publicstaticObject[]createImage(){
StringBuffersb=newStringBuffer();
//1.创建空白图片
BufferedImageimage=newBufferedImage(
WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
//2.获取图片画笔
Graphicsgraphic=image.getGraphics();
//3.设置画笔颜色
graphic.setColor(Color.LIGHT_GRAY);
//4.绘制矩形背景
graphic.fillRect(0,0,WIDTH,HEIGHT);
//5.画随机字符
Randomran=newRandom();
for(inti=0;i<SIZE;i++){
//取随机字符索引
intn=ran.nextInt(chars.length);
//设置随机颜色
graphic.setColor(getRandomColor());
//设置字体大小
graphic.setFont(newFont(
null,Font.BOLD+Font.ITALIC,FONT_SIZE));
//画字符
graphic.drawString(
chars[n]+"",i*WIDTH/SIZE,HEIGHT/2);
//记录字符
sb.append(chars[n]);
}
//6.画干扰线
for(inti=0;i<LINES;i++){
//设置随机颜色
graphic.setColor(getRandomColor());
//随机画线
graphic.drawLine(ran.nextInt(WIDTH),ran.nextInt(HEIGHT),
ran.nextInt(WIDTH),ran.nextInt(HEIGHT));
}
//7.返回验证码和图片
returnnewObject[]{sb.toString(),image};
}
/**
*随机取色
*/
publicstaticColorgetRandomColor(){
Randomran=newRandom();
Colorcolor=newColor(ran.nextInt(256),
ran.nextInt(256),ran.nextInt(256));
returncolor;
}
publicstaticvoidmain(String[]args)throwsIOException{
Object[]objs=createImage();
BufferedImageimage=(BufferedImage)objs[1];
//图片格式可以自定义,java对png图片显示更清楚,输出路径可自定义
OutputStreamos=newFileOutputStream("d:/x.png");
//注意图片格式与创建格式匹配
ImageIO.write(image,"png",os);
os.close();
}
}
更多关于验证码的文章请点击查看:《java验证码》
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。