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验证码》
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。