芋头图片,地狱煞星,王国平后台
本文实例为大家分享了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(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论